前端工程化
在网页比较简单的时代,以文件可以包含 HTML、CSS、JS;到后来结构、样式、行为的分离,文件开始多起来,慢慢的出现了AMD,CMD ,CommonJS,ES6 Module等,技术变化日新月异,把这些技术统一整合起来,就是工程化。
引用网上一作者的话:
将前端项目当成一项系统工程进行分析、组织和构建从而达到项目结构清晰、分工明确、团队配合默契、开发效率提高的目的。
node-sass
github地址:node-sass
首先安装node-sass
npm install node-sass
运行命令行,就能将scss
文件变成css
文件
npx node-sass src/css/style.scss dist/css/style.css
当我scss
文件变动,自动更新为css
文件
npx node-sass src/css/style.scss -w dist/css/style.css
生成map
文件
npx node-sass src/css/style.scss -w dist/css/style.css --source-map true
在这里遇到最大的问题是没有弄清楚全局安装和局部安装,陷入了好久npm install -g node-sass
是全局安装,可以直接使用node-sass
npm install node-sass
是局部安装,使用时需要加上相对路径./node_modules/.bin/node-sass
;或者使用npx node-sass
,npx
可以快速找到相对路径。
提示no such file or directory, open '/Users/mac/package.json'
,是因为缺少package.json
这个文件。
npm WARN saveError ENOENT: no such file or directory, open
'C:\Users\fanzm1\workspace\Astone\0115_NodeJS\package.json'
//首先,初始化项目,一路回车就行
npm init -f
//接着安装依赖
npm install formidable --save
babel
官方网址:babel
首先安装babel
npm install --save-dev babel-cli babel-preset-env
创建一个.babelrc
文件,写上
{ "presets": ["env"] }
在创建一个package.json
文件,方法:npm init
一路回车
打开package.json
,添加上内容
{
"devDependencies": {
"babel-cli": "^6.0.0"
}
}
运行下面这句就可以将js
文件进行翻译
./node_modules/.bin/babel src/js -d dist/js
当我src/js
文件有变动,自动更新为dist/js
文件
./node_modules/.bin/babel src/js -d dist/js -wtach
watch-cli
今天其他文件,比如image
,html
等不需要翻译的文件
地址:watch-cli
安装watch-cli
npm i -g watch-cli
使用,只要文件改动动就会拷贝到dist
目录里
watch -p "src/images/**/*" -c "cp -r src/images dist/images"
watch -p "src/index.html" -c "cp src/index.html dist/index.html"
每一种文件都有一个工具,造成每一种文件都需要开一个窗口,导致很乱,这时webpack
出现了,把这些整合在一起
webpack
webpack官网:webpack
首先npm init
,初始化出一个package.json
安装webpack
npm install --save-dev webpack
运行npx webpack
会让你安装package-cli
创建并编辑文件webpack.config.js
const path = require('path');
module.exports = {
mode: 'production',
entry: './src/js/app.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist/js')
},
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
}
};
app.js引用其他文件
import module1 from './module-1'
import module2 from './module-2'
module1()
module2()
被引用的文件
function fn(){
alert(1)
}
export default fn
/************/
function fn(){
console.log(2)
}
export default fn
现在可以把 JS 文件拷贝过去,还不能实现翻译
babel webpack
官网:babel-loader
安装
npm install "babel-loader@^8.0.0-beta" @babel/core @babel/preset-env webpack
配置webpack.config.json
文件的rules
部分
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
plugins: [require('@babel/plugin-proposal-object-rest-spread')]
}
}
}
node-sass webpack
官网:sass-loader
安装
npm install sass-loader node-sass webpack --save-dev
编辑配置webpack.config.json
文件的rules
部分
{
test: /\.scss$/,
use: [{
loader: "style-loader"
}, {
loader: "css-loader"
}, {
loader: "sass-loader",
options: {
includePaths: ["absolute/path/a", "absolute/path/b"]
}
}]
}
如果报错提示什么安装什么npm install ...
。
autoprefixer
github地址:PostCSS Loader
处理 CSS 兼容问题,在属性面前自动加前缀。
安装
npm i -D postcss-loader
编辑文件postcss.config.js
module.exports = {
//parser: 'sugarss', //可以不要
plugins: {
//'postcss-import': {}, //可以不要
//'postcss-preset-env': {}, //可以不要
'postcss-cssnext': {}
//'cssnano': {} //可以不要
}
}
编辑文件webpack.config.json
文件的rules
部分
use: [
'style-loader',
{ loader: 'css-loader', options: { importLoaders: 1 } }, //重点这句
{ loader: 'postcss-loader'}, //重点这句
'sass-loader'
]
如果报错提示什么安装什么npm install ...
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。