为了UED前端团队更好的协作开发同时提高项目编码质量,我们需要将Web前端使用工程化方式构建;

目前需要一些简单的功能:
1. 版本控制
2. 检查JS
3. 图片合并
4. 压缩CSS
5. 压缩JS
6. 编译SASS
这些都是每个Web项目在构建、开发阶段需要做的事情。前端自动化构建环境可以把这些重复工作一次配置,多次重复执行,极大的提高开发效率。
目前最知名的构建工具: Gulp、Grunt、NPM + Webpack;
grunt是前端工程化的先驱
gulp更自然基于流的方式连接任务
Webpack最年轻,擅长用于依赖管理,配置稍较复杂
推荐使用Gulp,Gulp基于nodejs中stream,效率更好语法更自然,不需要编写复杂的配置文件
Use Gulp to automate front-end build tasks
Gulp是基于 Node.js的,需要要安装 Node.js
1、为了确保依赖环境正确,我们先执行几个简单的命令检查。
node -v
Node是一个基于Chrome JavaScript V8引擎建立的一个解释器
检测Node是否已经安装,如果正确安装的话你会看到所安装的Node的版本号
2、接下来看看npm,它是 node 的包管理工具,可以利用它安装 gulp 所需的包
npm -v
这同样能得到npm的版本号,装 Node 时已经自动安装了npm
3、开始安装Gulp
npm install -g gulp
全局安装 gulp
gulp -v
得到gulp的版本号,确认安装成功
基础安装结束
-
4、切换到你的在项目根文件夹下,运行
npm install gulp --save-dev //将具体的gulp功能插件局部安装项目下
5、安装gulp功能插件依赖包
npm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename--save-dev
gulp功能模块的文件会放在项目所在的目录的./node_modules 下
6、我们目前先使用一些简单的功能:
- 检查Javascript
- 编译Sass文件
- 合并Javascript
- 压缩合并并重命名Javascript
新建gulpfile.js 配置文件放在项目根目录下
演示项目目录结构
testProject (项目名称)
|–.git 通过git进行版本控制,项目自动生成这个文件
|–node_modules 组件包目录
|–dist **发布环境**(编译自动生成的)
|–css 样式文件(style.css style.min.css)
|–images 图片文件(压缩图片\合并后的图片)
|–js js文件(main.js main.min.js)
|–index.html 静态页面文件(压缩html)
|–src **开发环境**
|–sass sass文件
|–images 图片文件
|–js js文件
|–index.html 静态文件
|–gulpfile.js gulp配置文件
|–package.json 依赖模块json文件,在项目目录下npm install会安装项目所有的依赖模块,简化项目的安装程序
现在,项目文件夹都建好,组件也安装完毕了,我们需要编写gulpfile.js文件以指定gulp需要为我们完成什么任务。
gulpfile.js内容如下:
// 引入gulp
var gulp = require('gulp');
// 引入组件
var jshint = require('gulp-jshint');//检查js
var sass = require('gulp-sass'); //编译Sass
var concat = require('gulp-concat');//合并
var uglify = require('gulp-uglify');//uglify 组件(用于压缩 JS)
var rename = require('gulp-rename');//重命名
// 检查js脚本的任务
gulp.task('lint', function() {
gulp.src('./js/*.js') //可配置你需要检查脚本的具体名字。
.pipe(jshint())
.pipe(jshint.reporter('default'));
});
// 编译Sass
gulp.task('sass', function() {
gulp.src('./scss/*.scss')
.pipe(sass())
.pipe(gulp.dest('./css'));//dest()写入文件
});
// 合并,压缩js文件
// 找到 js/ 目录下的所有 js 文件,压缩,重命名,最后将处理完成的js存放在 dist/js/ 目录下
gulp.task('scripts', function() {
gulp.src('./js/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('./dist'))
.pipe(rename('all.min.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist'));
console.log('gulp task is done');//自定义提醒信息
});
.... // 其他任务类似
// 定义默认任务,执行gulp会自动执行的任务
gulp.task('default', function(){
gulp.run('lint', 'sass', 'scripts');
// 监听js文件变化,当文件发生变化后会自动执行任务
gulp.watch('./js/*.js', function(){
gulp.run('lint','scripts');
});
});
7、现在,回到命令行窗口,可以直接运行gulp任务了。
gulp
这将执行定义的default任务,就和以下的命令式同一个意思
gulp default
当然,我们可以运行在gulpfile.js中定义的任意任务,比如,现在单独运行sass任务:
gulp sass
8、编译会显示Finished,如果你的JS有什么不好的地方它会提醒,避免一些不必要的错误,十分贴心
常见提醒:
1.禁止在同一行声明多个变量。
2.请使用 ===/!==来比较true/false或者数值
3.使用对象字面量替代new Array这种形式
4.不要使用全局函数。
5.Switch语句必须带有default分支
6.函数不应该有时候有返回值,有时候没有返回值。
7.For循环必须使用大括号
8.If语句必须使用大括号
9.for-in循环中的变量 应该使用var关键字明确限定作用域,从而避免作用域污染。
9、gulp的插件数量很多,后面还可以根据自己的需要进行添加任务
常用的gulp插件参考
gulp-imagemin: 压缩图片
gulp-ruby-sass: 支持sass,安装此版本需要安装ruby
gulp-minify-css: 压缩css
gulp-jshint: 检查js
gulp-uglify: 压缩js
gulp-concat: 合并文件
gulp-rename: 重命名文件
gulp-htmlmin: 压缩html
gulp-clean: 清空文件夹
gulp-livereload: 服务器控制客户端同步刷新(需配合chrome插件LiveReload及tiny-lr)
Use Git as a project management tool
安装git, 下载安装包会安装好 Git Shell 和可视化环境
http://git-scm.com/download/win
配置用户名:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
关联一个到团队的库
git remote add origin git@github.com:markyun/My-blog.git
添加文件到仓库,添加全部文件用 . 表示
git add .
把文件提交到仓库
git commit -m " first add project file"
提交文件到团队仓库
git push -u origin master //将本地的项目提交到远程仓库中。
以上就完成了前端团队最基本的开发环境搭建和代码提交工作流程。
补充:ZSmart UED Team 的前端开发软件环境 (Windows, Linux, Mac OS X)
安装Node.Js、NPM、Ruby、Java 基础环境
Sublime Text3 + 插件 用于编写前端代码
Google chrome 、Mozilla Firefox + Firebug
Internet Explorer 进行兼容测试和预览页面UI、动画效果和交互功能
Node.js+Gulp 进行前端自动化构建、JS语法验证、CSS压缩,图片压缩等;
Koala 实时编译Less、Sass、Compass、CoffeeScript;
Github 存储自己的代码库 、git或SVN用于版本控制和团队Code Review
Tomcat、DedeAMPZ、MAMP 进行简单运行环境演示
Photoshop CC 切图 + Sprites 合并小图标
XMind 画出清晰的工作或业务逻辑思维图
(未完待续...)
# nodejs环境搭建
# nodejs开发环境搭建
# JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
# JavaScript 常见安全漏洞和自动化检测技术
# 使用auto.js实现自动化每日打卡功能
# PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
# Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
# Angular.Js的自动化测试详解
# 从零搭建docker+jenkins+node.js自动化部署环境的方法
# Angular.js自动化测试之protractor详解
# python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
# JavaScript揭秘:实现自动化连连看游戏
# 放在
# 自己的
# 配置文件
# 重命名
# 目录下
# 自动生成
# 返回值
# 是一个
# 有什么
# 几个
# 运行环境
# 还可以
# 多个
# 你会
# 不需要
# 推荐使用
# 它是
# 所需
# 我们可以
# 请使用
相关文章:
建站之星安装提示数据库无法连接如何解决?
电商网站制作公司有哪些,1688网是什么意思?
如何通过山东自助建站平台快速注册域名?
如何选择域名并搭建高效网站?
建站主机选购指南与交易推荐:核心配置解析
制作营销网站公司,淘特是干什么用的?
如何在IIS中新建站点并解决端口绑定冲突?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何快速搭建高效可靠的建站解决方案?
如何在IIS7中新建站点?详细步骤解析
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何在新浪SAE免费搭建个人博客?
如何用VPS主机快速搭建个人网站?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
为什么Go需要go mod文件_Go go mod文件作用说明
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
广州美橙建站如何快速搭建多端合一网站?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
高端企业智能建站程序:SEO优化与响应式模板定制开发
宝塔面板创建网站无法访问?如何快速排查修复?
如何通过老薛主机一键快速建站?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
微信小程序 五星评分(包括半颗星评分)实例代码
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
网站专业制作公司有哪些,做一个公司网站要多少钱?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
C++如何编写函数模板?(泛型编程入门)
如何用免费手机建站系统零基础打造专业网站?
如何通过虚拟机搭建网站?详细步骤解析
济南网站制作的价格,历城一职专官方网站?
Python多线程使用规范_线程安全解析【教程】
网站微信制作软件,如何制作微信链接?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
微课制作网站有哪些,微课网怎么进?
如何在Windows 2008云服务器安全搭建网站?
济南企业网站制作公司,济南社保单位网上缴费步骤?
建站之星收费标准详解:套餐费用及年费价格表一览
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在西部数码注册域名并快速搭建网站?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
定制建站流程解析:需求评估与SEO优化功能开发指南
如何快速建站并高效导出源代码?
家庭服务器如何搭建个人网站?
建站上传速度慢?如何优化加速网站加载效率?
*请认真填写需求信息,我们会在24小时内与您取得联系。