模块化
在es6之前,由两种模块化规范:CommonJS 和 AMD,而如今ES6模块化已经逐渐取代了两者,成为浏览器和服务器通用的模块解决方案1
2
3
4
5
6
7
8
9//导入
import { readFile } from 'fs';
import React from 'react'
//导出
export function hello() {}
export default {
// ...
}
拓展:在ES6模块特性中,import时如何正确使用花括号’{ }’ 当引用的文件由默认导出的
default ``` 语法时才不需要'{}'
1
2
###### webpack大致使用如下:
module.exports = {
// 所有模块的入口,webpack从入口开始递归解析出所有依赖的模块
entry: ‘./app.js’,
output: {
// 把入口依赖的所有模块打包成一个文件bundle.js输出
filename: ‘bundle.js’
}
}
1 | ###### webapck 优点: |
const path = require(‘path’);
const ExtractTextPlugin = require(‘extract-text-webpack-plugin’);
module.exports = {
// JavaScript 执行入口文件
entry: ‘./main.js’,
output: {
// 把所有依赖的模块合并输出到一个 bundle.js 文件
filename: ‘bundle.js’,
// 把输出文件都放到 dist 目录下
path: path.resolve(__dirname, ‘./dist’),
},
module: {
rules: [
{
// 用正则去匹配要用该 loader 转换的 CSS 文件
test: /.css$/,
use: ExtractTextPlugin.extract({
// 转换 .css 文件需要使用的 Loader
use: [‘css-loader’],
}),
}
]
},
plugins: [
new ExtractTextPlugin({
// 从 .js 文件中提取出来的 .css 文件的名称
filename: [name]_[contenthash:8].css
,
}),
]
};
1 |
|
const path = require(‘path’);
const ExtractTextPlugin = require(‘extract-text-webpack-plugin’);
module.exports = {
// JavaScript 执行入口文件
entry: ‘./main.js’,
output: {
// 把所有依赖的模块合并输出到一个 bundle.js 文件
filename: ‘bundle.js’,
// 把输出文件都放到 dist 目录下
path: path.resolve(__dirname, ‘./dist’),
},
module: {
rules: [
{
// 用正则去匹配要用该 loader 转换的 CSS 文件
test: /.css$/,
use: ExtractTextPlugin.extract({
// 转换 .css 文件需要使用的 Loader
use: [‘css-loader’],
}),
}
]
},
plugins: [
new ExtractTextPlugin({
// 从 .js 文件中提取出来的 .css 文件的名称
filename: [name]_[contenthash:8].css
,
}),
]
};
1 |
|
module.exports={
devtool: ‘eval-source-map’,
entry: _dirname + ‘/app/main.js’,
output: {
path: _dirname + “/public”,
filename: “bundle.js”
}
}
`