前端开发技术栈学习笔记
Vue.js的安装方式
- 下载Vue.js到本地,通过<script>标签引入项目
- 利用CDN(内容分发网络)直接引入Vue.js库
- 通过npm安装或使用vue-cli脚手架工具
Vue.js核心特性
- 组件化开发
- 模板系统
- 响应式数据绑定
- 过渡动画效果
- 单文件组件(.vue)
ES6常用语法特性
- 函数默认参数值
- 模板字符串
- 多行文本支持
- 解构赋值
- 增强对象字面量
- 箭头函数
- Promise异步处理
- let块级作用域声明
- 类语法
- 模块化系统
Babel转换器
由于大多数浏览器不完全支持最新版本的JavaScript,为了确保代码的向下兼容性,我们需要将ES6及以上版本的代码转换为ES5。Babel是目前广泛使用的代码转译器,它能够将ES6代码转换为ES5代码,从而在现有浏览器环境中正常运行。这意味着我们可以立即使用ES6特性编写代码而无需担心环境兼容性问题。
Babel配置
- 配置文件为.babelrc,用于设置转码规则和插件
- 安装相应的转码器包:
# 安装ES6转码规则
npm install --save-dev babel-preset-es2015
# 安装React转码规则
npm install --save-dev babel-preset-react
转码命令
# 转码aaa.js并输出到xxx.js文件
babel aaa.js --out-file xxx.js
# 直接在控制台显示转码结果
babel aaa.js
Webpack模块打包工具
随着Web应用功能的日益复杂,JavaScript代码量也随之增长。各种框架的使用带来了更多的依赖包,这些复杂内容要让浏览器正确识别,需要繁琐的操作。Webpack通过简化这些繁琐操作来解决这一问题。
在处理应用程序时,Webpack会构建一个依赖关系图,包含应用程序所需的所有模块,然后将这些模块打包成一个或多个bundle,通过终端或修改webpack.config.js文件来配置各项功能。
Webpack 3.6.0 使用方法
- 在项目目录下安装webpack 3.6.0版本:
npm install --save-dev webpack@3.6.0 - 创建app文件夹存放JavaScript代码,创建public文件夹存放index.html
- 在app文件夹中创建多个JavaScript文件
- 在index.html中引入Webpack生成的bundle.js文件
- 创建并编辑webpack.config.js配置文件
- 运行webpack命令进行打包,生成bundle.js文件
npm中--save与--save-dev的区别
- --save:将包信息保存到package.json的dependencies中,表示项目运行时需要依赖的包
- --save-dev:将包信息保存到package.json的devDependencies中,表示开发阶段需要依赖的包
Webpack 4 使用方法
- 初始化npm项目:
npm init -y - 安装Webpack:
npm install webpack --save-dev - 安装webpack-cli(Webpack4将webpack本身和CLI分开):
npm install webpack-cli --save-dev - 在package.json中添加构建脚本:
"scripts": { "build": "webpack" } - 创建src文件夹和index.js文件,添加测试代码:
console.log("Webpack 4 测试"); - 运行npm run build命令,成功后会在当前目录下生成dist文件夹和main.js文件
Webpack 4 构建模式
Webpack 4提供了两种不同的构建模式:
- 开发模式:加速开发、减少构建时间、不进行代码压缩,命令为:
npm run dev - 生产模式:用于生产环境,会进行代码优化和压缩,命令为:
npm run production
使用CLI构建Vue应用
- 通过CLI工具初始化一个以Webpack为模板的项目:
vue create movie_view - 安装项目依赖:
cd movie_view npm install - 运行项目:
npm run dev
开发环境与生产环境
package.json文件
package.json文件包含了使用npm install命令安装的所有包和版本信息。npm run命令是对详细命令的简写,例如npm run dev实际是对node build/build.js的简写。
开发环境
运行npm run dev命令会启动本地测试服务器,默认打开http://localhost:8080/#/方便开发者调试。如需自动打开浏览器,可在/config/index.js中设置autoOpenBrowser字段为true。
生产环境
运行npm run build命令会以生产模式构建项目,在项目文件夹中生成一个dist文件夹,包含index.html和静态资源。可以使用PHP自带的测试服务器进行测试:
php -S 127.0.0.1:9999
然后在浏览器中访问http://127.0.0.1:9999/#/。
MongoDB数据库
MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库中功能最丰富、最接近关系型数据库的产品。它支持类似JSON的BSON格式数据结构,可以存储复杂的数据类型。
MongoDB的最大特点是查询语言功能强大,语法类似面向对象查询语言,几乎可以实现关系型数据库单表查询的大部分功能,并支持数据索引。
MongoDB服务端可在Linux、Windows或Mac OSX平台运行,支持32位和64位应用,默认端口为27017。
Express框架
Express是一个简洁而灵活的Node.js Web应用框架,提供一系列强大特性帮助开发人员创建各种Web应用。Express不对Node.js已有的特性进行二次抽象,只是在其上扩展了Web应用所需的功能,提供了丰富的HTTP工具和来自Connect框架的中间件,让创建强健、友好的API变得快速而简单。
NoSQL数据库
NoSQL泛指非关系型数据库,随着Web 2.0的兴起,传统关系型数据库在应对大规模和高并发的Web应用时显得力不从心。NoSQL数据库的产生是为了解决大规模数据集合和多数据种类带来的挑战,特别适合大数据应用。
NoSQL数据库适用场景:数据模型简单;对数据库性能要求高;不需要高度数据一致性;给定key容易映射复杂值的环境。
常见的NoSQL数据库类型:
- 键值存储数据库:如Redis、Tokyo Cabinet
- 列存储数据库:如Cassandra、HBase
- 文档型数据库:如MongoDB、CouchDB
- 图形数据库:如Neo4J
Node.js运行环境
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于方便地搭建响应速度快、易于扩展的网络应用。它使用事件驱动、非阻塞式的I/O模型,使开发既轻量又高效,非常适合在分布式设备上运行数据密集型的实时应用。
优点
- 采用事件驱动、异步编程,专为网络服务设计
- 非阻塞I/O处理带来高性能与出众的负载能力
- 轻量高效,是数据密集型分布式部署环境下实时应用的完美解决方案
缺点
- 可靠性相对较低
- 单进程、单线程,只支持单核CPU,无法充分利用多核服务器
- 进程崩溃会导致整个Web服务崩溃
Express Hello World示例
- 初始化npm项目:
npm init -y - 安装Express框架:
npm install express --save - 编写入口文件(index.js):
const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(3000, () => { console.log('服务器运行在 http://localhost:3000'); }); - 运行程序:
node index.js - 在浏览器中访问http://localhost:3000
简单电影网站后台开发
- 安装Express应用生成器:
npm install express-generator -g - 创建项目:
express movie_backend - 安装依赖并启动应用:
cd movie_backend npm install npm start - 在浏览器中访问http://localhost:3000
使用Mongoose连接MongoDB
- 安装mongoose中间件:
npm install mongoose --save - 创建数据库连接模块:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/movie_db', { useNewUrlParser: true, useUnifiedTopology: true }); - 创建数据模型和路由
- 测试API接口
使用Supervisor监控代码修改
- 全局安装Supervisor:
npm install supervisor -g - 使用Supervisor启动项目:
supervisor bin/www
用户操作模块开发
项目结构
- models文件夹:存放数据模型
- routes文件夹:存放路由文件
- common文件夹:存放公共模块
用户认证
- 注册功能:验证用户信息,创建用户记录
- 登录功能:验证用户名密码,生成Token
- 完整性验证:使用crypto中间件对字段组合加密
API接口设计
- POST /api/users/register:用户注册
- POST /api/users/login:用户登录
- GET /api/users/profile:获取用户信息
- PUT /api/users/profile:更新用户信息