现在前端工程师出去面试,不能避免的问到的是
ES6
的语法,但是所问到的都是一些比较简单的语法、或者在web
开发中使用webpack
构建的前端项目,作为一个全栈工程师来说,使用nodejs
写后端项目,我们会使用到ES6
的语法,自然会用来类、面向切面编程使用到装饰器等一些ES7
的语法。
一、在node
项目中正确的使用ES7
的配置
-
1、创建一个项目文件夹
-
2、初始化项目
npm init --yes
-
3、安装
babel
所需要的包npm i @babel/core@7.1.6 babel-core@^6.26.3 babel-plugin-transform-es2015-modules-commonjs@6.26.2 babel-polyfill@6.26.0 babel-preset-env@1.7.0 babel-preset-latest-node@2.0.2 babel-register@6.26.0 babel-plugin-transform-decorators-legacy -S
-
4、在根项目下创建
.babelrc
文件babeljs官网{ "presets": ["env"], "plugins": ["transform-es2015-modules-commonjs", "transform-decorators-legacy"] }
-
5、在根目录下创建一个
index.js
作为主入口文件require('babel-register'); const babel = require('@babel/core'); const babelPresetLatestNode = require('babel-preset-latest-node'); babel.transform('code();', { presets: [[babelPresetLatestNode, { target: 'current', }]], }); require('babel-polyfill'); require('./src');
-
6、我们日常的业务代码写在
src
文件夹下的index.js
中 -
7、另外补充:如果你想运行命令行的方式操作(可以参考
nodejs
脚手架)-
在项目的根目录下创建一个
bin
的文件夹 -
里面随便创建一个文件
#!/usr/bin/env node require('../'); // 表示执行根目录下index.js文件
-
在
package.json
文件中配置"bin": { "learn": "./bin/learn.js" // learn表示命令: 后面表示文件所在位置 },
-
运行命令,建立连接
npm link
-
直接在命令行中运行
learn
命令就可以
-
二、如果你是使用webpack
构建web
项目的时候就直接在webpack.config.js
中配置就好
-
1、初始化项目
-
2、安装包
"@babel/core": "^7.2.2", "@babel/plugin-proposal-decorators": "^7.2.3", "@babel/preset-env": "^7.2.3", "babel-core": "^6.26.3", "babel-loader": "^8.0.4", "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", "html-webpack-plugin": "^3.2.0", "webpack": "^4.28.2", "webpack-cli": "^3.1.2", "webpack-dev-server": "^3.1.13"
-
3、项目下创建一个
.babelrc
的文件{ "presets": ["@babel/preset-env"], "plugins": [ ["@babel/plugin-proposal-decorators", {"legacy": true}], "transform-es2015-modules-commonjs", ] }
-
4、配置
webpack.dev.config.js
文件const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: './src/index.js', output: { path: __dirname, filename: './dist/bundle.js', }, plugins: [ new HtmlWebpackPlugin({ template: './index.html', }) ], module: { rules: [ { test: /\.js?$/, exclude: /(node_modules)/, use: [ { loader: 'babel-loader', } ] } ] }, devServer: { contentBase: path.join(__dirname, './dist'), open: true, port: 9000, disableHostCheck: true, } }