本文全面介绍了前端全栈开发的基础知识,包括HTML、CSS和JavaScript的入门教程,以及Vue.js和React.js等前端框架的快速上手指南。此外,文章还详细讲解了如何使用Node.js和Express.js搭建后端服务器,并提供了部署静态网站和在线商城的实际案例,助力读者掌握前端全栈开发的技能。
前端基础知识 HTML基础语法HTML(HyperText Markup Language)是构成网页的基础语言。HTML文档是由一系列标签和内容组成的结构化文本文件,这些标签用于定义网页上的元素,如标题、段落、列表、链接等。下面是一些基本的HTML标签和它们的作用:
基本标签
<html>
:HTML文档的根元素。<head>
:包含文档的元数据,如<title>
标签。<title>
:定义HTML文档的标题。<body>
:包含文档的所有可见内容。
<!DOCTYPE html>
<html>
<head>
<title>我的第一个网页</title>
</head>
<body>
<h1>欢迎来到我的网站</h1>
<p>这是一个简单的HTML网页。</p>
</body>
</html>
常用标签
<h1>
到<h6>
:定义标题,<h1>
是最重要的标题,而<h6>
是最不重要的标题。<p>
:定义段落。<a>
:定义链接。<img>
:定义图片。<ul>
、<ol>
、<li>
:定义无序列表和有序列表。<div>
:定义一个块级容器。<span>
:定义一个内联容器。
<!DOCTYPE html>
<html>
<head>
<title>我的第一个网页</title>
</head>
<body>
<h1>欢迎来到我的网站</h1>
<p>这是一个简单的HTML网页。</p>
<a href="http://idcbgp.cn/">慕课网</a>
<img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://example.com/image.jpg" alt="示例图片">
<ul>
<li>项目1</li>
<li>项目2</li>
<li>项目3</li>
</ul>
<ol>
<li>步骤1</li>
<li>步骤2</li>
<li>步骤3</li>
</ol>
<div>这是一个块级元素。</div>
<span>这是一个内联元素。</span>
</body>
</html>
表格
表格使用<table>
、<tr>
、<th>
、<td>
等标签来定义。<table>
定义表格,<tr>
定义表格行,<th>
定义表头单元格,<td>
定义单元格。
<!DOCTYPE html>
<html>
<head>
<title>数据表格</title>
</head>
<body>
<table>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>职业</th>
</tr>
<tr>
<td>张三</td>
<td>25</td>
<td>程序员</td>
</tr>
<tr>
<td>李四</td>
<td>30</td>
<td>设计师</td>
</tr>
</table>
</body>
</html>
CSS样式入门
CSS(Cascading Style Sheets)用于定义HTML文档的样式。通过CSS,可以控制页面的颜色、布局、字体、边距、边框等视觉效果,使网页更具个性化。
基本选择器
- 元素选择器:通过元素名选择所有相同的元素。
- 类选择器:通过类名选择特定的元素。
- ID选择器:通过ID名选择特定的元素。
/* 元素选择器 */
p {
color: red;
font-size: 16px;
}
/* 类选择器 */
.highlight {
background-color: yellow;
}
/* ID选择器 */
#header {
color: blue;
font-weight: bold;
}
样式属性
color
:定义文本颜色。background-color
:定义背景颜色。font-size
:定义字体大小。font-family
:定义字体样式。text-align
:定义文本对齐方式。margin
:定义元素周围的空白区域。padding
:定义元素内部的空白区域。border
:定义元素的边框。
/* 设置p元素的样式 */
p {
color: red;
background-color: yellow;
font-size: 16px;
font-family: Arial, sans-serif;
text-align: center;
margin: 10px;
padding: 10px;
border: 2px solid black;
}
样式继承
CSS样式具有继承性,子元素通常会继承父元素的某些样式。例如,父元素的字体颜色会传递给子元素。
<!DOCTYPE html>
<html>
<head>
<title>样式继承示例</title>
<style>
body {
color: blue;
}
</style>
</head>
<body>
<p>这是父元素的文字。</p>
<div>
<p>这是子元素的文字。</p>
</div>
</body>
</html>
样式优先级
选择器的优先级决定了样式的最终效果。优先级顺序通常是:行内样式 > ID选择器 > 类选择器 > 元素选择器。
<!DOCTYPE html>
<html>
<head>
<title>样式优先级示例</title>
<style>
p {
color: red;
}
.highlight {
color: green;
}
#highlight {
color: blue;
}
</style>
</head>
<body>
<p>默认颜色是红色。</p>
<p class="highlight">这个元素是绿色。</p>
<p id="highlight">这个元素是蓝色。</p>
</body>
</html>
JavaScript入门
JavaScript是一种广泛用于Web开发的编程语言,可以用来处理用户输入、控制网页内容、操作HTML元素等。JavaScript与HTML和CSS结合,可以使网页更加动态和交互性。
基本语法
JavaScript的基本语法包括变量声明、数据类型、条件语句、循环语句等。
// 变量声明
let message = "Hello, world!";
let number = 42;
let isTrue = true;
// 输出变量
console.log(message); // Hello, world!
console.log(number); // 42
console.log(isTrue); // true
// 条件语句
if (isTrue) {
console.log("条件为真");
} else {
console.log("条件为假");
}
// 循环语句
for (let i = 0; i < 5; i++) {
console.log(i); // 输出 0 到 4
}
DOM操作
通过DOM(Document Object Model),可以动态地操作HTML文档。以下是一个简单的示例,展示了如何使用JavaScript添加和删除HTML元素。
<!DOCTYPE html>
<html>
<head>
<title>DOM操作示例</title>
</head>
<body>
<p id="myParagraph">这是一个段落。</p>
<button onclick="addParagraph()">添加段落</button>
<button onclick="removeParagraph()">删除段落</button>
<script>
function addParagraph() {
let newParagraph = document.createElement("p");
newParagraph.textContent = "添加的段落";
document.body.appendChild(newParagraph);
}
function removeParagraph() {
let paragraph = document.getElementById("myParagraph");
paragraph.parentNode.removeChild(paragraph);
}
</script>
</body>
</html>
事件处理
事件处理是JavaScript的重要功能之一,通过事件处理可以响应用户的操作,如点击按钮、提交表单等。
<!DOCTYPE html>
<html>
<head>
<title>事件处理示例</title>
</head>
<body>
<button id="myButton">点击我</button>
<script>
let button = document.getElementById("myButton");
button.addEventListener("click", function() {
alert("你点击了按钮");
});
</script>
</body>
</html>
异步编程
JavaScript支持异步编程,通过setTimeout
和setInterval
函数可以实现延时执行和定时执行。
// 延时执行
setTimeout(function() {
console.log("延时执行");
}, 3000);
// 定时执行
let timerId = setInterval(function() {
console.log("定时执行");
}, 1000);
// 清除定时器
clearInterval(timerId);
前端框架与库
Vue.js快速上手
Vue.js是一个轻量级的前端框架,用于构建用户界面。Vue.js的核心功能包括数据绑定、组件系统、路由管理等。
安装与初始化
首先,需要安装Vue.js。可以通过CDN引入:
<!DOCTYPE html>
<html>
<head>
<title>Vue.js示例</title>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://cdn.jsdelivr.net/npm/vue@2"></script>
</head>
<body>
<div id="app">
{{ message }}
</div>
<script>
let app = new Vue({
el: '#app',
data: {
message: 'Hello, Vue.js!'
}
});
</script>
</body>
</html>
数据绑定
Vue.js使用v-bind
和v-model
指令进行数据绑定。v-bind
用于绑定属性值,v-model
用于双向数据绑定。
<!DOCTYPE html>
<html>
<head>
<title>数据绑定示例</title>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://cdn.jsdelivr.net/npm/vue@2"></script>
</head>
<body>
<div id="app">
<p>{{ message }}</p>
<input v-model="message">
</div>
<script>
let app = new Vue({
el: '#app',
data: {
message: 'Hello, Vue.js!'
}
});
</script>
</body>
</html>
组件
Vue.js使用组件系统来构建复杂的用户界面。组件可以复用,降低代码冗余。
<!DOCTYPE html>
<html>
<head>
<title>组件示例</title>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://cdn.jsdelivr.net/npm/vue@2"></script>
</head>
<body>
<div id="app">
<my-component v-for="item in items" :message="item"></my-component>
</div>
<script>
Vue.component('my-component', {
props: ['message'],
template: '<p>{{ message }}</p>'
});
let app = new Vue({
el: '#app',
data: {
items: ['Hello', 'World', 'Vue']
}
});
</script>
</body>
</html>
React.js入门教程
React.js是Facebook开发的一个用于构建用户界面的JavaScript库。React.js的核心特性包括虚拟DOM、组件化开发、状态管理等。
安装与初始化
首先,需要安装React.js。可以通过CDN引入:
<!DOCTYPE html>
<html>
<head>
<title>React.js示例</title>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/react@17/umd/react.development.js"></script>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/babel-standalone@6.26.0/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
const element = <h1>Hello, React!</h1>;
ReactDOM.render(
element,
document.getElementById('root')
);
</script>
</body>
</html>
数据绑定
React.js使用JSX语法进行数据绑定。JSX是JavaScript和XML的结合,可以使HTML标签和JavaScript语法无缝结合。
<!DOCTYPE html>
<html>
<head>
<title>数据绑定示例</title>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/react@17/umd/react.development.js"></script>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/babel-standalone@6.26.0/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
const element = (
<h1>{'Hello, React!'}</h1>
);
ReactDOM.render(
element,
document.getElementById('root')
);
</script>
</body>
</html>
组件
React.js使用组件系统来构建复杂的用户界面。组件可以复用,降低代码冗余。
<!DOCTYPE html>
<html>
<head>
<title>组件示例</title>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/react@17/umd/react.development.js"></script>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/babel-standalone@6.26.0/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
const MyComponent = (props) => (
<p>{props.message}</p>
);
const element = (
<div>
<MyComponent message="Hello, World!" />
<MyComponent message="Hello, React!" />
</div>
);
ReactDOM.render(
element,
document.getElementById('root')
);
</script>
</body>
</html>
Bootstrap基础使用
Bootstrap是一个流行的前端框架,用于快速构建响应式和移动优先的网站。Bootstrap提供了许多预定义的CSS类和组件,如按钮、导航、表格、模态框等。
安装与引入
可以通过CDN引入Bootstrap:
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap示例</title>
<link rel="stylesheet" >
</head>
<body>
<button type="button" class="btn btn-primary">Primary Button</button>
<button type="button" class="btn btn-secondary">Secondary Button</button>
</body>
</html>
布局与栅格系统
Bootstrap使用栅格系统来定义布局。栅格系统将页面划分为12列,可以通过不同的类名来定义列的宽度。
<!DOCTYPE html>
<html>
<head>
<title>栅格系统示例</title>
<link rel="stylesheet" >
</head>
<body>
<div class="container">
<div class="row">
<div class="col col-12">12 列</div>
<div class="col col-6">6 列</div>
<div class="col col-6">6 列</div>
<div class="col col-4">4 列</div>
<div class="col col-4">4 列</div>
<div class="col col-4">4 列</div>
</div>
</div>
</body>
</html>
组件
Bootstrap提供了许多预定义的组件,如导航、按钮、表格等。
<!DOCTYPE html>
<html>
<head>
<title>组件示例</title>
<link rel="stylesheet" >
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
</div>
</nav>
</body>
</html>
后端基础知识
Node.js入门简介
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于构建服务器端应用。Node.js可以运行在任何安装了JavaScript引擎的环境中,包括浏览器和服务器。
安装与初始化
首先,需要安装Node.js。可以通过官网下载安装包,也可以使用包管理工具如npm来安装:
npm install -g node
然后,可以通过node
命令来运行JavaScript文件:
node app.js
基本语法
Node.js使用JavaScript编写,语法与浏览器端JavaScript基本一致。可以通过console.log
来输出信息。
console.log('Hello, Node.js!');
文件系统操作
Node.js提供了丰富的内置模块,用于操作文件系统。以下是一个示例,展示了如何读取文件内容。
const fs = require('fs');
fs.readFile('/path/to/file', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data.toString());
});
网络编程
Node.js可以用于构建网络服务器,通过http
模块可以快速搭建HTTP服务器。
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, World!');
});
server.listen(8000, () => {
console.log('Server is running on port 8000');
});
Express.js快速搭建服务器
Express.js是一个基于Node.js的Web应用框架,用于快速搭建Web应用。Express.js可以简化路由定义、中间件使用和模板渲染等操作。
安装与初始化
首先,需要安装Express.js。可以通过npm来安装:
npm install express
然后,可以通过require
来引入Express.js。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Express.js!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
路由定义
Express.js使用路由来定义URL和对应的处理函数。通过app.get
和app.post
等方法可以定义GET和POST请求的路由。
app.get('/users', (req, res) => {
res.send('GET 请求 /users');
});
app.post('/users', (req, res) => {
res.send('POST 请求 /users');
});
中间件使用
Express.js使用中间件来处理请求和响应。中间件可以改变请求和响应对象,也可以终止请求响应链。
app.use((req, res, next) => {
console.log('请求被中间件处理了');
next();
});
模板渲染
Express.js可以使用模板引擎来渲染HTML模板。常用的模板引擎包括EJS、Pug和Handlebars等。
app.set('views', './views');
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
res.render('index', { message: 'Hello, EJS!' });
});
数据库基础
MySQL数据库基础
MySQL是一个流行的开源关系数据库管理系统。MySQL支持多种数据类型,包括整型、浮点型、字符串型等。
安装与初始化
可以通过官网下载安装包,也可以使用包管理工具如apt或yum来安装:
sudo apt-get install mysql-server
安装完成后,可以通过mysql
命令来进入MySQL命令行界面:
mysql -u root -p
基本语法
MySQL的基本语法包括创建数据库、创建表、插入数据、查询数据等。
-- 创建数据库
CREATE DATABASE mydatabase;
-- 使用数据库
USE mydatabase;
-- 创建表
CREATE TABLE users (
id INT,
name VARCHAR(50),
email VARCHAR(100)
);
-- 插入数据
INSERT INTO users (id, name, email) VALUES (1, '张三', 'zhangsan@example.com');
-- 查询数据
SELECT * FROM users;
SQL语句
SQL(Structured Query Language)是一种用于管理关系数据库的标准语言。常用的SQL语句包括CREATE
、INSERT
、SELECT
、UPDATE
和DELETE
等。
-- 创建表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
-- 插入数据
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
-- 查询数据
SELECT * FROM users;
-- 更新数据
UPDATE users SET email = 'zhangsan_new@example.com' WHERE id = 1;
-- 删除数据
DELETE FROM users WHERE id = 1;
MongoDB入门教程
MongoDB是一个流行的NoSQL数据库管理系统,用于存储半结构化或非结构化的数据。MongoDB支持JSON格式的数据存储,可以通过查询语言来操作数据。
安装与初始化
可以通过官网下载安装包,也可以使用包管理工具如apt或yum来安装:
sudo apt-get install mongodb
安装完成后,可以通过mongo
命令来进入MongoDB命令行界面:
mongo
基本语法
MongoDB的基本语法包括创建集合、插入文档、查询文档等。
// 创建集合
db.createCollection("users");
// 插入文档
db.users.insert({
name: "张三",
email: "zhangsan@example.com"
});
// 查询文档
db.users.find();
数据模型
MongoDB使用文档作为基本的数据模型,文档是键值对的集合。文档支持嵌套结构,可以表示复杂的数据关系。
// 插入文档
db.users.insert({
name: "张三",
email: "zhangsan@example.com",
address: {
street: "街道",
city: "城市",
zipCode: "邮编"
}
});
查询语言
MongoDB使用查询语言来操作数据。查询语言支持条件查询、聚合查询、更新查询等。
// 条件查询
db.users.find({ name: "张三" });
// 聚合查询
db.users.aggregate([
{ $group: { _id: "$city", count: { $sum: 1 } } }
]);
// 更新查询
db.users.updateOne({ name: "张三" }, { $set: { email: "zhangsan_new@example.com" } });
部署与上线
静态网站部署到GitHub Pages
GitHub Pages是一个免费的静态网站托管服务,可以将静态网站部署到GitHub上。以下是部署静态网站到GitHub Pages的步骤:
创建仓库
首先,需要在GitHub上创建一个新的仓库。仓库名需要符合<username>.github.io
的形式,例如zhangsan.github.io
。
提交代码
将静态网站的代码提交到仓库中。可以通过Git或GitHub的Web界面来提交代码。
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/zhangsan/zhangsan.github.io.git
git push -u origin master
配置GitHub Pages
在仓库的设置中,选择GitHub Pages
选项卡,选择master
分支作为源分支,然后点击Save
按钮。
访问网站
部署完成后,可以通过https://zhangsan.github.io
访问网站。
Docker是一个开源的容器化平台,可以将应用及其依赖打包成独立的容器。以下是使用Docker部署应用的步骤:
安装Docker
首先,需要安装Docker。可以通过官网下载安装包,也可以使用包管理工具如apt或yum来安装:
sudo apt-get install docker.io
编写Dockerfile
Dockerfile是一个包含构建指令的文本文件,用于定义如何构建Docker镜像。以下是一个简单的Dockerfile示例:
# 使用官方Node.js镜像作为基础镜像
FROM node:14
# 设置工作目录
WORKDIR /app
# 复制package.json和package-lock.json文件
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 3000
# 启动应用
CMD ["node", "server.js"]
构建镜像
通过docker build
命令来构建Docker镜像。镜像名可以自定义。
docker build -t myapp .
运行容器
通过docker run
命令来运行Docker容器。
docker run -p 3000:3000 -d myapp
实战项目
创建个人博客网站
创建一个简单的个人博客网站,使用HTML、CSS和JavaScript来构建静态页面,使用Node.js和Express.js来搭建后端服务器。
静态页面
首先,创建一个包含博客文章的静态页面。
<!DOCTYPE html>
<html>
<head>
<title>我的博客</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>我的博客</h1>
</header>
<main>
<article>
<h2>文章1</h2>
<p>这是文章1的内容。</p>
</article>
<article>
<h2>文章2</h2>
<p>这是文章2的内容。</p>
</article>
</main>
</body>
</html>
/* style.css */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
header {
background-color: #f8f9fa;
padding: 20px;
}
main {
padding: 20px;
}
article {
margin-bottom: 20px;
}
后端服务器
然后,使用Node.js和Express.js来搭建后端服务器。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send(`
<html>
<head>
<title>我的博客</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>我的博客</h1>
</header>
<main>
<article>
<h2>文章1</h2>
<p>这是文章1的内容。</p>
</article>
<article>
<h2>文章2</h2>
<p>这是文章2的内容。</p>
</article>
</main>
</body>
</html>
`);
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
运行服务器
最后,运行后端服务器。
node app.js
构建简单的在线商城
创建一个简单的在线商城,使用HTML、CSS和JavaScript来构建前端页面,使用Node.js和Express.js来搭建后端服务器。
静态页面
首先,创建一个包含商品列表的静态页面。
<!DOCTYPE html>
<html>
<head>
<title>在线商城</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>在线商城</h1>
</header>
<main>
<ul>
<li>
<img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="product1.jpg" alt="商品1">
<h2>商品1</h2>
<p>价格:¥100</p>
<button>购买</button>
</li>
<li>
<img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="product2.jpg" alt="商品2">
<h2>商品2</h2>
<p>价格:¥200</p>
<button>购买</button>
</li>
</ul>
</main>
</body>
</html>
/* style.css */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
header {
background-color: #f8f9fa;
padding: 20px;
}
main {
padding: 20px;
}
ul {
list-style: none;
padding: 0;
}
li {
margin-bottom: 20px;
display: flex;
align-items: center;
border: 1px solid #ddd;
padding: 10px;
}
img {
width: 100px;
height: 100px;
margin-right: 20px;
}
button {
background-color: #007bff;
color: #fff;
border: none;
padding: 5px 10px;
cursor: pointer;
}
后端服务器
然后,使用Node.js和Express.js来搭建后端服务器。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send(`
<html>
<head>
<title>在线商城</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>在线商城</h1>
</header>
<main>
<ul>
<li>
<img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="product1.jpg" alt="商品1">
<h2>商品1</h2>
<p>价格:¥100</p>
<button>购买</button>
</li>
<li>
<img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="product2.jpg" alt="商品2">
<h2>商品2</h2>
<p>价格:¥200</p>
<button>购买</button>
</li>
</ul>
</main>
</body>
</html>
`);
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
运行服务器
最后,运行后端服务器。
node app.js
这样就完成了一个简单的在线商城的构建。
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質文章