百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

JavaScript全栈开发-构建工具

toyiye 2024-05-19 19:35 15 浏览 0 评论

在前端开发过程中,经常需合并文件、压缩代码、单元测试、检查语法错误等,需要用手工或不同的工具来完成不同的任务,重复劳动且耗时繁琐,而自动化构建工具可以帮我们自动管理和运行各种任务。可以减少代码构建手工出错的机会,大大增强了开发效率,节省资源。

以下是常见的自动构建工具,可根据需要,选择其中之一进行安装。

* Grunt

* Gulp

1. Grunt

首页:http://gruntjs.com

中文:http://www.gruntjs.net

项目:https://github.com/gruntjs(包括Grunt及其各种模块)

源码:https://github.com/gruntjs/grunt

插件:http://gruntjs.com/plugins

1.1 Grunt安装

Grunt和Grunt插件是通过npm(node package manager)安装管理的。

常见的Grunt模块说明




在项目目录安装Grunt及常见的Grunt插件:

npm install grunt-cli -g

npm install grunt --save-dev# 安装常见的grunt模块

npm install grunt-contrib-clean --save-dev

npm install grunt-contrib-compass --save-dev

npm install grunt-contrib-concat --save-dev

npm install grunt-contrib-copy --save-dev

npm install grunt-contrib-cssmin --save-dev

npm install grunt-contrib-imagemin --save-dev

npm install grunt-contrib-jshint --save-dev

npm install grunt-contrib-uglify --save-dev

npm install grunt-contrib-watch --save-dev

grunt-cli为grunt的命令行界面,主要向Grunt传递Gruntfile配置信息,然后执行Grunt来完成配置文件中指定的任务。

-g:--global,表示全局安装,全局安装后可在任何目录执行grunt命令

--save-dev:表示安装grunt模块时,模块会被自动加到项目的package.json文件的依赖列表中

1.2 Grunt配置文件

模块安装完成后,在项目根目录创建名为Gruntfile.js的配置文件。该配置文件是一个node.js的模块,Grunt运行需要该配置文件。

Grunt常用API

-- grunt对象:Grunt通过将grunt对象赋值给module.exports函数,将grunt对象的属性和方法传递给Gruntfile、Grunt模块和task文件中

-- grunt.initConfig(configObject):grunt.config.init方法的别名,初始化各模块的配置

-- grunt.loadNpmTasks(pluginName):加载通过npm安装的Grunt模块

-- grunt.registerTask(taskName, taskList):注册定义任务

以下为压缩css的任务的配置文件

//Gruntfile.jsmodule.exports = function (grunt) {//初始化配置

grunt.initConfig({

cssmin: { //定义配置对象

minify: { //定义任务目标:压缩

expand: true, //表下面的文件占位符*要扩展成具体文件名

cwd: 'css/', //需要处理文件所在目录

src: ['*.css', '!*.min.css'],//需处理的文件列表(*表任意数量字符,!表示不匹配的情况)

dest: 'css/', //处理后生成的文件所在目录

ext: '.min.css' //处理后生成的文件扩展名

},

combine: { //定义任务目标:合并

files: { //目标文件名,源文件名列表

'css/out.min.css': ['css/part1.min.css', 'css/part2.min.css']

}

}

}

});

grunt.loadNpmTasks('grunt-contrib-cssmin'); //加载npm安装的cssmin模块

grunt.registerTask('default', ['cssmin:minify', 'cssmin:combine']); //注册任务

};

配置项属性可在Grunt插件列表http://gruntjs.com/plugins 找到对应的模块页面获取详细的信息。上述安装的其它模块的使用方法可参考插件模块页面的介绍。Grunt内部方法调用的基本流程是 grunt.initConfig() -> grunt.loadNpmTasks() -> grunt.registerTask()。

1.3 Grunt任务的运行

1) 运行方式1:Grunt命令行方式执行

命令行进到项目根目录,执行grunt命令,命令格式:grunt 模块名:目标名,未指定模块名,目标名将依次执行相应模块及相应目标。

grunt #各模块及目标依次执行

grunt cssmin #执行cssmin模块下所有目标任务

grunt cssmin:minify #执行cssmin模块下的minify目标任务

2) 运行方式2:开发工具IDE方式执行

1> WebStorm

打开项目代码,右键点击 Gruntfile.js 文件 -> 点击Show Grunt Tasks菜单项 -> 出现Grunt任务列表 -> 右键选中其中一个任务项 Run -> 完成执行。(若Grunt列表出现警告,未列出任务,则需要点击警告设置Grunt的NodeJS和Grunt-cli安装路径)。

2> SublimeText

SublimeText默认没有安装Grunt,参看SublimeText中插件支持的安装方法在Package Control中安装插件"Grunt"。

安装完成后 -> 快捷键ctrl+shift+p(或Tools -> Command Palette)运行命令行 -> 选中Grunt命令 -> 完成执行。

2. Gulp

首页:http://gulpjs.com

中文:http://www.gulpjs.com.cn

项目:https://github.com/gulpjs

源码:https://github.com/gulpjs/gulp

插件:http://gulpjs.com/plugins

2.1 Gulp安装

Gulp和Gulp插件是通过npm(node package manager)安装管理的。

常见的Gulp模块说明




在项目目录安装Gulp及常见的Gulp插件:

npm install gulp --global # 安装常见Gulp模块

npm install gulp-cache --save-dev

npm install gulp-concat --save-dev

npm install gulp-imagemin --save-dev

npm install gulp-jshint --save-dev

npm install gulp-livereload --save-dev

npm install gulp-minify-css --save-dev

npm install gulp-notify --save-dev

npm install gulp-plumber --save-dev

npm install gulp-rename --save-dev

npm install gulp-replace --save-dev

npm install gulp-strip-debug --save-dev

npm install gulp-uglify --save-dev

npm install imagemin-pngquant --save-dev

npm install del --save-dev

2.2 Gulp配置

模块安装完成后,在项目根目录下创建 gulpfile.js 代码文件。

Gulp常用API

-- gulp.src(globs [,options]):产生数据流。匹配glob或glob数组的文件,返回Vinyl-fs类型的stream,可通过管道(pipe)传递给插件

-- gulp.dest(path [,options]):作为管道的输出写入文件,同时输出将继续输出。多次调用dest将多次输出到多个目录,目录不存在则创建

-- gulp.task(name [,deps], fn):指定任务名及任务函数来定义任务。default为Gulp默认执行的任务。

-- gulp.watch(glob [, opts], tasks) 或者 gulp.watch(glob [, opts, cb]):监视文件变化执行某些操作,返回可分发change事件的EventEmitter对象。

以下为压缩css的任务的配置文件

//Gulpfile.jsvar gulp = require("gulp"),

mincss = require("gulp-minify-css"),

del = require("del");var stream = gulp.src("css/*.css"); //定义压缩的文件,返回stream//压缩前先清除文件夹里面的内容

gulp.task("clean", function (callback) {

del(["css/min"], callback);

});

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

return stream

.pipe(gulp.dest("css/min")) //输出文件夹

.pipe(mincss()); //执行压缩

});

gulp.task("default", ["clean"], function () {

gulp.start("mincss");//clear任务执行时,执行压缩。start方法可传入多个任务参数,表依次执行

});

Gulp API的使用方法详见:http://www.gulpjs.com.cn/docs/api。方法调用的基本流程是 gulp.src() -> gulp.dest() -> task()。

2.3 Gulp运行

1) 运行方式1:Gulp命令行方式执行

项目根目录,执行gulp命令,命令格式:gulp <task> <othertask>,未指定任务名,执行所有任务。

2) 运行方式2:开发工具IDE方式执行

1> WebStorm

打开项目代码,右键点击 Gulpfile.js 文件 -> 点击Show Gulp Tasks菜单项 -> 出现Gulp任务列表 -> 右键选中其中一个任务项 Run -> 完成执行。(若Gulp列表出现警告,未列出任务,则需要点击警告设置Gulp的NodeJS和Gulp安装路径)

2> SublimeText

SublimeText默认没有安装Gulp,参看SublimeText中插件支持的安装方法在Package Control中安装插件"Gulp"。

安装完成后 -> 快捷键ctrl+shift+p(或Tools -> Command Palette)运行命令行 -> 选中Gulp命令 -> 选中任务 -> 完成执行。

3. 构建工具小结

作为一个工具,核心的需求应该是让开发者花最少的时间学习使用,并为开发者节省更多的时间,解放重复的手工劳动。这就要求一个理想的自动化构建工具应满足 简单,易用,易扩展,易维护,高性能,多平台运行,可靠,可测试等要求。其架构设计应满足的功能需求与非功能性需求如下图所示。




Grunt与Gulp都比较完善的构建工具,但是各自有自己的特点:

Grunt

-- 插件较丰富

-- 易用,常见任务都有插件

-- Grunt及插件的选项较多,使用复杂

Gulp

-- 配置较少,使用简单

-- 利用Node.js流,不需要往磁盘写中间文件,速度更快

-- 易于学习,API较少

推荐阅读:

【JavaScript 教程】入门篇-JavaScript 的基本语法

「JavaScript 教程」数据类型-函数

详解 js 闭包(图文版)

js 中原型和原型链深入理解

面试:JavaScript基础篇

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码