前端也是一种软件工程,随着网站制作越来越复杂,各种js,css,html文件越来越多,需要提高整个系统生产效率,提高编码、测试、维护阶段的生产效率。
工程化即系统化、模块化、规范化的一个过程。
参考:https://yq.aliyun.com/articles/574270?utm_content=m_45413
Sass是一个将脚本解析成CSS的脚本语言,即SassScript。
SASS中文网:https://www.sass.hk/
// 删除替换原gem源
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
// 安装Sass和Compass
gem install sass
gem install compass
// 查看sass版本和帮助
sass -v
sass -h
@charset "UTF-8";
$color: #ccc; //$声明变量
$font-color:rgb(37, 37, 37);
$width: 80px;
$height: 50px;
.box{
border: 1px solid $color; // 使用变量
width: $width;
height: $height;
display:inline-flex;
justify-content: center;
align-items: center;
color: $font-color;
}
.container {
border: 2px solid $color;
.box {
border: 1px solid $color;
width: $width;
height: $height;
display: inline-flex;
justify-content: center;
align-items: center;
color: $font-color;
.sp1{
font-size: 20px;
}
}
.box:last-child{
border: 1px dashed red;
}
}
a{
color:$color;
text-decoration: none;
&:hover{ //&引用父选择器
color:$font-color;
}
}
}
_global.scss文件:
@charset "UTF-8";
$color: #ccc;
$font-color:rgb(37, 37, 37);
$width: 60px;
$height: 50px;
前端工程化必备阶段,构建,优化,压缩,合并,校验
官方网站:https://gulpjs.com/
下载nonde.js
地址:https://nodejs.org/zh-cn/download/
检测安装 node -v ; npm -v
安装gulp
// 全局安装gulp
npm install gulp-cli -g
// 使用gulp的项目中单独安装
npm install -g gulp
// 添加cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
生成 package.json
{
"name": "gulp",
"version": "1.0.0",
"description": "gulp is cool",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Riy",
"license": "ISC"
}
cnpm install gulp --save-dev
可以自己起一个任务名,运行的时候,直接在命令行输入gulp 任务名,gulp也给我们定义了一个默认任务名default,如果任务名为
default,直接在命令行输入gulp即可。
// 先引入包
const gulp = require(‘gulp‘) //这个每次都要引入,在你使用插件的时候
const less = require(‘gulp-less‘)
// 定义任务对less进行转换,myless是你自己定义的任务名
gulp.task(‘myless‘, function() {
// 1.匹配到要处理的文件,目录src/less/*.less下的所有后缀名为`.less`的所有文件
gulp.src(‘src/less/*.less‘)
// 2.对less语法进行转换!
.pipe(less())
// 3.指定文件的输出目录dist/css
.pipe(gulp.dest(‘dist/css‘))
})
gulp.task(‘html‘, function(){
return gulp.src(‘src/*.html‘).pipe(gulp.dest(‘dest‘));
})
安装插件: cnpm install gulp-sass --save-dev
const less = require(‘gulp-less‘)
// 定义任务对less进行转换,myless是你自己定义的任务名
gulp.task(‘myless‘, function() {
// 1.匹配到要处理的文件,目录src/less/*.less下的所有后缀名为`.less`的所有文件
gulp.src(‘src/less/*.less‘)
// 2.对less语法进行转换!
.pipe(less())
// 3.指定文件的输出目录dist/css
.pipe(gulp.dest(‘dist/css‘))
})
gulp.task(‘default‘, gulp.series(‘html‘, ‘scss‘));
安装gulp-concat:cnpm install gulp-concat --save-dev
const concat = require(‘gulp-concat‘);
gulp.task(‘js‘, function(){
return gulp.src(‘src/js/*.js‘)
.pipe(concat(‘dongli.min.js‘))
.pipe(gulp.dest(‘dest/js‘));
})
gulp.task(‘watch‘, function () {
gulp.watch(‘src/*.html‘, f1 //任务的回调函数);
});
安装插件:npm install gulp-uglify --save-dev
const uglify = require(‘gulp-uglify‘)
// 对js请求进行压缩和混淆
// 定义任务
gulp.task(‘myscript‘, function() {
// 1.匹配要处理的文件
gulp.src(‘src/js/*.js‘)
// 2.将js代码压缩混淆
.pipe(uglify())
.pipe(gulp.dest(‘dist/js‘))
})
安装插件:npm install gulp-htmlmin --save-dev
// 对html进行压缩的包
const htmlmin = require(‘gulp-htmlmin‘)
// 对html进行压缩
// 定义任务
gulp.task(‘myhtml‘, function(){
// 1.匹配到要处理的html文件
gulp.src(‘src/*.html‘)
// 2.对html进行压缩!
.pipe(htmlmin({
collapseWhitespace:true // 去除空白符
}))
// 3.输出
.pipe(gulp.dest(‘dist‘))
})
安装插件: npm install gulp-cssnano --save-dev
const cssnano = require(‘gulp-cssnano‘)
// 定义任务
gulp.task(‘mycss‘, function(){
// 1.
gulp.src(‘src/css/*.css‘)
.pipe(cssnano())// 消化,转换,压缩
.pipe(gulp.dest(‘dist/css‘))
})
const http = require(‘http‘);
const hostname = ‘127.0.0.1‘;
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader(‘Content-Type‘, ‘text/plain‘);
res.end(‘Hello World\n‘);
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
exports.name = function(){
const name = ‘dongli‘;
console.log(name);
}// 导出
const name = require(‘./index.js‘);
name.name() // 使用
module.exports = function(){
console.log(‘dongli hello‘);
}
const name = require(‘./index.js‘);
name()
webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。
WebPack中文网:https://www.webpackjs.com/
cnpm install webpack --save-dev
cnpm install webpack-cli --save-dev
webpack-demo
|- package.json
+ |- /dist
+ |- index.html
- |- index.html
|- /src
|- index.js
如今已经不是 HTML、CSS、JS 前端三剑客仗剑走天下的时代了,前端工程化将越来越重要,工程化学习是前端工程师必不可少的一块,笔者主要方向非前端,工程化暂做了解,后期有技术再深入学习。文章中的官方学习网站已标注,希望深学的同学可以移步官方。
原文:https://www.cnblogs.com/riyir/p/12730708.html