构建更好的前端框架-using gruntJS

时间:2021-06-22 13:44:57

Grunt is a task-based command line build tool for JavaScript projects。简单来说就是基于Grunt的前端的Build工具集合,包含各种功能。

也许你觉得它会是一个装Cool的工具,事实上我不想花时间去说明它是如何如何优秀。在这里发帖,只是想唤起大家的一种想法,JavaScript的开发不只是用一个Editor的年代了,国外的技术已经到了很成熟的地步了,跟或不跟,都在于你。我也是头一次接触到Grunt。

一、Grunt安装

Grunt的安装离不开NodeJS,所以,你首先要安装NodeJS,在Windows,Linux安装也是方便的,这里就是说了。安装完NodeJS之后,我们就可以安装Grunt了。

npm install grunt    //npm在后期已经集成在NodeJS

二、安装PhantomJS


这个东西是我用Grunt初始化一个Jquery 插件项目之后要我安装的,PhantomJS is a headless WebKit with JavaScript API. 大概是一个Webkit的东西,可以运行JavaScript的。当然功能是很强大的,用于截图,网页监测等。安装这个也很简单,我是在Windows下的,下载了一个zip然后解压,保证能在cmd下运行,所以要设置环境变量。

在cmd下,打phantomjs,能进入一个interactive mode (REPL)就可以了。

三、快速一个Jquery plugin环境

grunt init:jquery  //在window下,你要使用grunt.cmd,所以完整的是:grunt.cmd init:jquery

这里会用询问的方式来获取这个插件的信息,插件名字,版本号,作者,电子邮件等。所有东西都写好,它会问你要不要再修改,如果不用则打N。

这里是它的一个目录结构。

LICENSE-GPL
LICENSE
-MIT
README.md
grunt.js
libs
|-- jquery
| |-- jquery.js
|-- qunit
|-- qunit.css
|-- qunit.js
package.json
src
|-- jquery.demo.js ---->这个将是以后完成插件的源码
test
---->测试版本
|-- jquery.demo.html
|-- jquery.demo_test.js

 四、检查刚才新建的项目

grunt.cmd  
D:\node>grunt.cmd
Running
"lint:files" (lint) task
Lint
free.

Running
"qunit:files" (qunit) task
Testing my
-first-jquery-plugin.html....OK
>> 4 assertions passed (59ms)

Running
"concat:dist" (concat) task
File
"dist/my-first-jquery-plugin.js" created.

Running
"min:dist" (min) task
File
"dist/my-first-jquery-plugin.min.js" created.
Uncompressed size:
536 bytes.
Compressed size:
263 bytes gzipped (372 bytes minified).

Done, without errors.

五、接下来要干什么

当然是核心的工作了,打代码。我前2天才开始看JQ插件制作,发现官网的说明文档风格不太适合我。下面是我看Twitter上的一些风格,比较适合我。

!(function($){

"use strict";

var somejQueryPlusin=function(element,options){

this.$element = $(element);
this.options = options;

};

somejQueryPlusin.prototype
= {
Constructor:
"somejQueryPlusin",
show:
function(){
alert(
'show');
},
hide:
function(){
alert(
'hide');
},
..................
};

$.fn.somejQueryPlusin
= function(options){
return this.each(function(){ //JQ插件的核心
var $this = $(this),
options
= $.extend({}, $.fn.somejQueryPlusin.defaults, typeof option == 'object' && option),
data
= $this.data('somejQueryPlusin');

if(!data) $this.data('somejQueryPlusin', (data = new somejQueryPlusin(this, options)));

// data['show']();
});
}

$.fn.somejQueryPlusin.defaults
= {
//配置默认参数
}



})(jQuery);

其实想更深入地介绍插件的开发,可惜功力不够。至今还没有发开过牛B的东西,慢慢来,楼主还是比较菜的。

最后,来说说大家的疑虑,为什么花这么长时间搞这些东西,最后才敲代码。这肯定是有原因的,这些工具的出现正是促进这个行业的,规范前端开发的全部东西。

如果我说不服你使用这些工具,不妨看看其他的是怎么用的?

利用-grunt-(几乎)无痛地做前端开发(一)
Meet Grunt: The Build Tool for JavaScript