一、NPM
1.1、什么是NPM?
npm是node.js的一个依赖管理工具,和maven类似,用于对项目的依赖进行统一的管理。在我们安装node.js的时候就默认安装了npm。
#在命令提示符输入 npm -v 可查看当前npm版本
npm -v
#如果想直接生成 package.json 文件,那么可以使用命令
npm init -y
1.2、package.json
package.json和maven的pom.xml类似,用于标注我们需要的依赖以及版本。
1.3、修改npm镜像
由于npm仓库并不在国内,和maven一样,需要用到国内的一些镜像来加快下载的速度。
npm config set registry https://registry.npm.taobao.org
1.4、npm install
- 使用 npm install 安装依赖包的最新版,
- 模块安装的位置:项目目录\node_modules
- 安装会自动在项目目录下添加 package-lock.json文件,这个文件帮助锁定安装包的版本
- 同时package.json 文件中,依赖包会被添加到dependencies节点下,类似maven中的< dependencies>
二、 Babel
2.1、什么是Babel?
-
ES6的某些高级语法在浏览器环境甚至是Node.js环境中无法执行。
-
Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行执行。这意味着,你可以现在就用 ES6 编写程序,而不用担心现有环境是否支持。
2.2、Babel安装
npm install -g babel-cli
#查看是否安装成功
babel --version
2.3、babel使用
Babel的配置文件是.babelrc,存放在项目的根目录下,该文件用来设置转码规则和插件,基本格式如下。
{
"presets": [],
"plugins": []
}
presets字段设定转码规则,将es2015规则加入 .babelrc:
{
"presets": ["es2015"],
"plugins": []
}
安装转码器,在项目中安装
npm install --save-dev babel-preset-es2015
# npm install --save-dev csv-loader xml-loader
# 转码结果写入一个文件
mkdir dist1
# --out-file 或 -o 参数指定输出文件
babel src/example.js --out-file dist1/compiled.js
# 或者
babel src/example.js -o dist1/compiled.js
# 整个目录转码
mkdir dist2
# --out-dir 或 -d 参数指定输出目录
babel src --out-dir dist2
# 或者
babel src -d dist2
2.4 自定义脚本
{
// ...
"scripts": {
// ...
"build": "babel src\\example.js -o dist\\compiled.js"
},
}
mkdir dist
npm run build
三、模块化开发
3.1 什么是模块化开发
随着网站逐渐变成”互联网应用程序”,嵌入网页的Javascript代码越来越庞大,越来越复杂。
Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。但是,Javascript不是一种模块化编程语言,它不支持”类”(class),包(package)等概念,也不支持”模块”(module)。
3.2 模块化开发的两种规范
- CommonJS模块化规范
- ES6模块化规范
3.2.1 commonjs
CommonJS使用 exports 和require 来导出、导入模块。
如下定义一个工具类的js文件
// 定义成员:
const sum = function(a,b){
return a + b
}
const subtract = function(a,b){
return a - b
}
const multiply = function(a,b){
return a * b
}
const divide = function(a,b){
return a / b
}
导出js
//简写
module.exports = {
sum,
subtract,
multiply,
divide
}
在另一个js中引用
//引入模块,注意:当前路径必须写 ./
const m = require('./四则运算.js')
console.log(m)
const r1 = m.sum(1,2)
const r2 = m.subtract(1,2)
console.log(r1,r2)
3.2.2 ES6规范
ES6使用 export 和 import 来导出、导入模块。
-
导出
export function getList() { console.log('获取数据列表') } export function save() { console.log('保存数据') }
-
导入
//只取需要的方法即可,多个方法用逗号分隔 import { getList, save } from './userApi.js' getList() save()
此时需要安装babel才可以运行
1 配置.babelrc
{
"presets": ["es2015"],
"plugins": []
}
2 安装
npm install --save-dev babel-preset-es2015
3 在package.json中定义以下插件
{
// ...
"scripts": {
"build": "babel src -d dist"
}
}
4 执行
npm run build
另一种ES6规范导出
export default {
getList() {
console.log('获取数据列表2')
},
save() {
console.log('保存数据2')
}
}
导入
import user from "./userApi2.js"
user.getList()
user.save()
以上笔记来自狂神教程:https://www.kuangstudy.com/bbs/1351463043300708353