基于gulp的前端框架开发规范

前端开发及相关规范 - 基于gulp的前端框架开发规范

1.前端开发工具的安装和使用说明

前端开发工具的目录结构

html codeBuilder - v0.9
├── statics
    ├── html //静态文件开发
    ├── js // 非require引入的js文件
    ├── Lib // 第三方JS包
    ├── ve_2_1 //
        ├── css // 样式目录
            ├── fonts // bootstrap的图标字体
            ├── img // 图片目录
            ├── less // less源码
            ├── sprite // 雪碧图按目录全称目录名的图片
                ├── dirName
            ├── vender // 第三方css包,比如bootstrap
        ├── js // JS目录
            ├── dist //生成文件的目录(与开发源码目模块对应)
                ├── cart.js  
                ├── common.js 
                ├── lib.js 
                ├── region.js 
                ├── sidebar.js 
                ├── tpl.js 
                ├── user.js 
                ├── web.js 
            ├── src // 开发源码的目录
                ├── cart // 购物车模块
                ├── common // 公共的函数模块
                ├── lib // 公共jq插件模块
                ├── region // 处理联动地址的模块
                ├── sidebar // 侧边栏模块
                ├── tpl //  前端mvc模板引擎的压缩源码
                ├── user // 用户中心模块
                ├── web // VE前端模块,包括首页、亲子、品牌专题、详情页等
            ├── tpl //
            ├── config.dev.js // requirejs 开发配置文件[自动生成]
            ├── config.js // requirejs开发配置文件[自动生成]
            ├── config.release.js //
            ├── config.test.js // requirejs 测试环境配置文件[自动生成]
            ├── js.map.json // 压缩后的文件位置映射[自动生成]
            ├── path.json // requirejs 的 config -> path 内容,第三包的路径缩写配置
            ├── shim.json // requirejs 的 config -> shim 内容,第三包的依赖申明
            ├── ver_config.json // 开发、测试、预生产到发布,方便部署静态资源,而创建的版本和环境变量
        ├── tpl //
            ├── toolbar
                ├── mian.html 
    ├── dot.gif // lazyloading的占位符
    ├── evc-VE.js // 在线客服的js
    ├── favicon.ico // 网站的缩略logo
    ├── README.md // 文档首页内容 markdown 语法
    ├── region.js // 地址

statics/Lib // 第三方JS包 目录说明

每个包单独一个文件夹,目的是:方便一个包多版本存放
如:jQuery 的 1.x 跟 2.x , 2.x 是针对移动版

安装

  • 前往 http://nodejs.org/ 安装nodeJS
    • 注意系统是32位还是64位的,选择对应的版本
    • 如果是windows系统,需自行设置好环境变量,将nodejs的路径加入到系统的 path 环境变量中
  • 在终端执行 npm install -g cnpm --registry=http://r.cnpmjs.org
    • 安装国内镜像管理命令-- cnpm
    • 参考文档 https://www.npmjs.org/package/cnpm
  • 在终端执行 npm install -g gulp ,安装 gulp 全局支持
  • 进入前端自动化开发和部署工具的目录,执行 npm install(使用国外镜像) 或 cnpm install(使用国内镜像)

-- enjoy --

升级自动化工具

  • 进入前端自动化开发和部署工具的目录,执行 npm install(使用国外镜像) 或 cnpm install(使用国内镜像)

执行自动化工具

以下操作,需进入 FeBuilder 的解压目录目录下执行

  • gulp
    • 监控 less 文件变化,自动生成 css
    • 监控 js/src 文件变化, 自动在 dist 目录生成对应的压缩 js
    • 监控 js/src 文件变化, 自动在 doc 目录,根据 jsdoc 格式,生成文档
    • 监控 css/sprite 目录,如果有新 sns 文件,自动生成雪碧图

注:如果添加新目录,需重新执行该指令,否则新目录不会监控

  • gulp sprite 生成雪碧图
  • gulp script 压缩,合并,打包js
  • gulp less 编译less文件
  • gulp watch

数据格式约定

  • 原则上,前端开发是完全可以脱离开发环境和生产环境来进行的,因为前端开发主要是开发一些静态的资源,比如 HTML 、 CSS和 JS 等。
  • 与后端的通讯,我们约定以 JSON 的格式进行数据交换,那么前端开发完全就可以本地模拟一个 .json 格式的文件来进行开发调试。
  • 基于 JSON 的本地模拟数据,在与后端的同事沟通约定后,只需要对方API返回的数据结构和本地模拟的一致即可。

2.前端开发工具的相关约定

文件和目录的命名约定

  • 必须是英文单词、名字拼音或者名字拼音首字母;
  • 多个单词用下划线(_)连接;
  • 只能出现英文字母、数字、连字符(_),严禁以中文名来命名;
    > 注:此命名约定适用于 html, css, js, swf, php, xml, png, gif, jpg, ico 等前端维护的所有文件类型和相关目录

开发文件的建立

  • css
    • 基于gulp的前端框架,前端开发是通过编写LESS,然后gulp会自动监听LESS来生成压缩的CSS,生成的文件与LESS同名
    • 在 css/less 目录下建立LESS文件
    • 不需要输出的CSS的,文件名要以下划线 _ 为前缀,通过 @import 包含的方式调用
    • 例如: @import "_ve_index";(注意,@import包含的less文件可将.less后缀省略掉)
    • 尽管LESS语法兼容CSS语法,但LESS源文件的编写请遵循LESS语法,以提高它的可读性和可维护性。 
  • icon合成雪碧图 -css sprite
    • 在 css/sprite 目录下,按照功能模块的不同来建立文件夹,然后将零星的小图标放置在这个文件夹中;
    • 在gulp启动的状态下,它会自动监控文件夹中文件的变化,自动合成 css/img/dirName.png 雪碧图及 css/less/_sp_dirName.less。
    • 通过 @import 包含的方式调用 _sp_dirName.less即可
    • 请注意,如果一个项目没有icon,则不要建立一个空的文件夹,gulp会报错。
什么是CSS Sprites??

CSS Sprites就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的background-image,background-repeat,background-position的组合进行背景定位,background-position可以用数字精确的定位出背景图片的位置。利用CSS Sprites能很好地减少网页的http请求,从而大大的提高页面的性能,这也是CSS Sprites最大的优点。

  • Javascript

    为了项目更容易管理和团队协作,js的开发需要以模块化的方式进行。
    在 ve_2_1/js/src 目录下建立按照功能模块的不同,来建立文件夹及js文件

    • js要按照AMD规范来命名和书写, 通过requireJS包管理器的方式来加载它依赖的其他js模块;
    • js编译好之后,会自动压缩到 ve_2_1/js/dist 目录,在页面中需要配合require.js(js依赖管理)和config.js(依赖的配置文件)来加载自动压缩后的js。
    • config.js有四个不同环境: config.dev.jsconfig.test.jsconfig.release.jsconfig.js 分别对应 开发环境测试环境预生产环境生产环境
    • 四个不同环境的js文件加载,在嵌套cms系统的前端模板时,只需要用 {php echo init_js();} (后端php同事要预先封装好init_js 函数)来动态输出即可。

      *** 更多js模块化开发的参考文档:
    • RequireJS和AMD规范
    • Javascript模块化编程1
    • Javascript模块化编程2
    • Javascript模块化编程3

    *** 举例:

    ve双城首页的js,我们就建立在 js/src/web 目录下,并命名为index.js,它依赖于'jquery.slide', 'web/common', 'web/timer'和jquery,而'jquery.slide', 'web/common', 'web/timer'也依赖于jqeury,jquery已被全局化,那么index.js应该是这样的:

    • index.js:
    javascript codeBuilder - v0.9
        define('web/index', ['jquery.slide', 'web/common', 'web/timer'], function(slide, common) { var doc = document, win = window; //首页大图轮播 var _fullSlide = function() { var $sliderBox = $('.slider_box'); var $fullSlide = $('.fullSlide'); var imgs = $fullSlide.find('.bd .preload'); var now_img = $fullSlide.find('.bd img').eq(0); ... 

    又如 common.js应该是这样的:

    • common.js:
    javascript codeBuilder - v0.9
        define('web/common', [], function() { var exports = {}; var doc = document, win = window; //网页顶部的关注hover事件 exports.hover_qr = function() { $('.QRcode').on('mouseover', function() { $('.QRcode-box').toggle(); $('.QRcode i').toggleClass('selected'); }).on('mouseout', function() { $('.QRcode-box').toggle(); $('.QRcode i').toggleClass('selected'); }); }; ... 

    index.js 和common.js不需要在引用jquery.js,在它们内部中可以直接使用全局jquery中定义的 $符号。

    • 页面中加载index.js的方法
    html codeBuilder - v0.9
        
                        
                        

你可能感兴趣的:(基于gulp的前端框架开发规范)