大前端系列之NPM、Babel、模块化开发

一、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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空圆小生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值