前端工程化浅析

在过去前端开发一直没有完善的一些代码处理等工具来富足开发,而nodejs火起来之后,很多基于node环境的工具诞生之后对前端开发造成了冲击,慢慢的,使用这些工具来完成项目的搭建和开发这样的方式被称为前端工程化。

使用工程化开发项目原因:

现在的项目不论是规模还是复杂度都有很大程度提高,所以如何快速搭建环境以及搞笑的代码管理,后期处理成为了衡量前端工程师技术的标准

工程化帮我们:

构造环境变得简单、自动化,代码的压缩合并,模块化,抽离都能一步完成,减少了后期处理成本。

现有的工程化工具:

grunt、gulp是自动化构建工具,webpack是模块化打包工具,bower、npm是包管理工具

gulp使用方式:

基于流的自动化构建工具。

因为gulp运行在nodejs中,所以遵循commonjs模块化规范,gulp使用通过创建和执行任务来完成

关键方法:

1.gulp.task()创建任务

2.gulp.src()查找资源文件

3.gulp.desk()输出文件

4.gulp.watch()监听文件内容变化

5. .pipe()可以对文件进行处理

gulp只提供查找、监听文件,处理后输出文件,但是如何处理都不属于gulp的功能范围

工程化的实现:

1、建立项目目录

2、在项目中执行npm  init应该有一个package.json文件,标注项目相关信息。

3、选择gulp + gulp-webpack + 进行项目的开发

4、全局安装gulp : npm install gulp --global

在项目中安装gulp依赖:npm install gulp --save-dev(-D)

5、建立开发目录以及依赖等

6、建立gulpfile.js文件,在这里可以发布任务,通过命令行执行任务

。。。

工程化的详细实现

1、热更新服务器

npm i gulp-webserver -D

2、配置sass开发环境

sass并不能被浏览器直接识别,需要编译成css在引入

sass的底层是ruby,在nodejs中需要使用node-sass工具帮助编译

.sass    .scss

先安装[email protected]

npm install -g [email protected]

npm install [email protected] -D

在安装gulp中的编译sass的工具

npm install  gulp-sass -D

注意:在编译sass时,以保存就报错,在编译就好了

原因:设备优势反应不过来,按下保存按钮时gulp-sass在编译sass时,其他的模块任务已经开始运行

解决:在编译sass的位置包上一个settimeout

注意:在sass里应该模块化开发

3、合并sass文件

npm  install -D gulp-concat

4、css兼容处理

在移动端中浏览器内核都是webkit,但是css依然要加前缀,而弹性盒的语法有两个版本,他们基本不同。

codepen.io 可以在此在线写代码,做css兼容,找好看效果

gulp-autoprefixer

5、js模块化编译打包

npm i gulp-webpack -D

用babel编译es6,用gulp-uglify压缩js,gulp-rename重命名

6、dom

const gulp = require("gulp")

const concat = require(‘gulp-concat‘)//合并

const cleanCSS = require(‘gulp-clean-css‘);//压缩css

const autoprefixer = require(‘gulp-autoprefixer‘);//css兼容

const webserver = require("gulp-webserver")//热更新模块

//热更新服务的任务

gulp.task(‘server‘,function () {

gulp.src(‘./‘).

pipe(webserver({

host:"localhost",

port:9000,

livereload :true , //是否热更新

directoryListing :true

}))

})

const sass = require(‘gulp-sass‘)//处理sass的模块

gulp.task(‘sass‘,function () {//编译sass的任务

// setTimeout(function(){

gulp.src(‘./src/sass/**/*.scss‘).

pipe(sass({outputStyle:‘compressed‘}).on(‘error‘, sass.logError))

.pipe(concat(‘index.css‘))

// .pipe(cleanCSS({compatibility: ‘ie8‘}))

.pipe(autoprefixer({

browsers: [‘last 2 versions‘],

cascade: false

}))

.pipe(gulp.dest("./build/css"))

// },200)

})

//js处理

const webpack = require(‘gulp-webpack‘)

const uglify = require(‘gulp-uglify‘);

const rename = require(‘gulp-rename‘)

gulp.task("packjs",function(){

gulp.src("./src/js/index.js")

.pipe(webpack({

output:{

filename:‘index.js‘

},

module:{

loaders:[

{

test:/\.js$/,

loader:"babel-loader",

query:{

presets:[‘es2015‘]

}

}

]

}

}))

.pipe(uglify())

.pipe(rename({

suffix: ".min"

}))

.pipe(gulp.dest(‘./build/js‘))

})

//监听sass任务

gulp.task(‘watch:sass‘,function () {

gulp.watch(‘./src/sass/**/*.scss‘,[‘sass‘])

})

//监听js任务

gulp.task(‘watch:js‘,function () {

gulp.watch(‘./src/js/**/*.js‘,[‘packjs‘])

})

//默认任务

gulp.task(‘default‘,[‘sass‘,‘watch:sass‘,‘packjs‘,‘watch:js‘,‘server‘])

时间: 2024-11-09 10:28:26

前端工程化浅析的相关文章

浅析前端工程化

1. 什么是前端工程化 自有前端工程师这个称谓以来,前端的发展可谓是日新月异.相比较已经非常成熟的其他领域,前端虽是后起之秀,但其野蛮生长是其他领域不能比的.虽然前端技术飞快发展,但是前端整体的工程生态并没有同步跟进.目前绝大多数的前端团队仍然使用非常原始的"切图(FE)->套模板(RD)"的开发模式,这种模式下的前端开发虽说不是刀耕火种的原始状态,但是效率非常低下. 前端的工程化问题与传统的软件工程虽然有所不同,但是面临的问题是一样的.我们首先回顾一下传统的软件开发流程模型:

爆栈之前端工程化技术小结备案

ps,前些天一90后同事说,要我多写些blog,因为你的实力要show给别人知道,就要怎样怎样的.. 同时建议写个工程化架构来简化工作等等.有时觉得有点对,又觉得有点可笑,有觉得有点无奈... 由于本人是重后端技术,所以对前端技术了解并不深入. 由于很多都是原始pc的web,而且大多都是轻前端项目.所以这里先说下以前用到过的前端js技术大多是: jquery,extjs,easyui,ko,bootstrap,dorado等等,当然还有各种各样的,如日历,上传,富编辑器,报表等等js插件. 但现

HTML5移动应用开发为什么需要引入前端工程化

使用HTML5和Javascript开发的移动应用,和典型的现代Web前端项目一样,有着大量的Javascript,HTML和CSS代码,因此前端工程化在HTML5移动应用开发中同样有着重要意义,可以避免大量重复性的工作,提供效率和质量,优化产品的性能. 目前前端工程化比较通用的框架主要有国外的grunt,gulp,百度的F.I.S等,这些框架基本上都是基于Node.js实现的(百度的F.I.S最早是基于PHP开发的,后来切换到Node.js).Node.js对前端工程师有着非常强的亲和力,有各

论前端工程化

在不知道什么时候,突然有人提起前端工程化这东西,一开始觉得又是某个大神故意提起的高深词汇,专门来吓唬人的. 继而我疯狂查找了很多的资料,在接近二十篇的相关资料,每一篇文章都写得神乎其神,大有唯我独尊的意味,但每篇看下来,总感觉不对经--就是大家都把自己一套比较规范的开发套路充当出前端工程化,前端工程化变成了前端优化,让人看了,"对啊,这样做规范多了,优化不错啊,巴拉巴拉",但又觉得工程化不应该只是这些,像缺什么,让人看得云里雾里,似懂非懂.这种文章虽不算误人子弟,但讳莫如深,妖魔化了前

前端工程化(摘抄)

目前来说,Web业务日益复杂化和多元化,前端开发已经由以WebPage模式为主转变为以WebApp模式为主了.现在随便找个前端项目,都已经不是过去的拼个页面+搞几个jQuery插件就能完成的了.工程复杂了就会产生许多问题,比如:如何进行高效的多人协作?如何保证项目的可维护性?如何提高项目的开发质量?... 前端工程化是前端架构中重要的一环,就是为了解决上述各种效率方面的问题的.而前端工程本质上是软件工程的一种,因此我们应该从软件工程的角度来研究前端工程. 那么前端工程化需要考虑哪些因素?我认为前

到底是什么是前端工程化、模块化、组件化

引言 提到前端往往很多人的映像就是入门简单,HTML.CSS加一起一个星期基本上就能大概上手,JS难一点但也能很快写一些简单的小效果,在网上随便一搜索各种特效代码随意用,一个新手前端也能在很短的时间里写出炫酷的页面效果,然而入门简单并不意味着前端这碗饭很好吃,做惯了切图.布局.扣特效的前端新同学在向前发展的路上越来越觉得吃力,而没有任何编程思想和软件开发基础很多人对前端工程化.组件化.模块化.MVC这些"高大上"的词汇云里雾里.本文用最简单的语言介绍一下我对工程化.组件化.模块化的理解

论前端工程化(转载)

在不知道什么时候,突然有人提起前端工程化这东西,一开始觉得又是某个大神故意提起的高深词汇,专门来吓唬人的. 继而我疯狂查找了很多的资料,在接近二十篇的相关资料,每一篇文章都写得神乎其神,大有唯我独尊的意味,但每篇看下来,总感觉不对经--就是大家都把自己一套比较规范的开发套路充当出前端工程化,前端工程化变成了前端优化,让人看了,"对啊,这样做规范多了,优化不错啊,巴拉巴拉",但又觉得工程化不应该只是这些,像缺什么,让人看得云里雾里,似懂非懂.这种文章虽不算误人子弟,但讳莫如深,妖魔化了前

前端优化带来的思考,浅谈前端工程化

重复优化的思考 这段时间对项目做了一次整体的优化,全站有了20%左右的提升(本来载入速度已经1.2S左右了,优化度很低),算一算已经做了四轮的全站性能优化了,回顾几次的优化手段,基本上几个字就能说清楚: 传输层面:减少请求数,降低请求量执行层面:减少重绘&回流 传输层面的从来都是优化的核心点,而这个层面的优化要对浏览器有一个基本的认识,比如: ① 网页自上而下的解析渲染,边解析边渲染,页面内CSS文件会阻塞渲染,异步CSS文件会导致回流 ② 浏览器在document下载结束会检测静态资源,新开线

web前端开发浅析

原文地址:http://www.cnblogs.com/babyzone2004/articles/1807381.html 摘 要:前端开发作为一项新的领域,经历的时间随然较短,却显示了强大的生命里,在web2.0时代,扮演着极其重要的角色,它是RIA时代的幕后推手,同时,也是数字媒体技术的应用之一.   关键词:数字媒体技术:web开发:前端开发,网页重构 什么是前端技术  前端技术包括JavaScript.ActionScript.CSS.xHTML等"传统"技术与Adobe R