当前位置:  编程技术>WEB前端
本页文章导读:
    ▪Gruntjs入门 (2)      前一篇记录了Grunt的安装,这篇介绍下怎么使用Gruntjs来搭建一个前端项目,然后使用grunt合并,压缩JS文件。大概有如下步骤新建项目Bejs新建文件package.json新建文件Gruntfile.js命令行执行grunt任.........
    ▪【Web 开发必备】史上最全的浏览器 CSS & JS Hack 手册        浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异。因此,浏览器兼容成为前端开发人员的必备技能。如果有一份浏览器 Hack 手册,那查.........
    ▪经典网页设计:20个简约风格的电子商务网站        电子商务是一个不断发展的行业,方便买卖双方。购物者可以在家里购买到自己需要的商品,而商家只需要管理一个网站,而不是一个完整的实体店。但是,当你发展你的网上商店时,其.........

[1]Gruntjs入门 (2)
    来源:    发布时间: 2013-11-06

前一篇记录了Grunt的安装,这篇介绍下怎么使用Gruntjs来搭建一个前端项目,然后使用grunt合并,压缩JS文件。

大概有如下步骤

  • 新建项目Bejs
  • 新建文件package.json
  • 新建文件Gruntfile.js
  • 命令行执行grunt任务
  •  

    一、新建项目Bejs

    源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会自动生成。

     

    二、新建package.json

    package.json放在根目录下,它包含了该项目的一些元信息,如项目名称、描述、版本号,依赖包等。它应该和源码一样被提交到svn或git。 现在的项目结构如下

    package.json内容需符合JSON语法规范,如下

    {
    "name": "Bejs",
    "version": "0.1.0",
    "devDependencies": {
    "grunt": "~0.4.0",
    "grunt-contrib-jshint": "~0.1.1",
    "grunt-contrib-uglify": "~0.1.2",
    "grunt-contrib-concat": "~0.1.1"
    }
    }

    devDependencies中的grunt在前一篇已经安装了,grunt-contrib-jshint/grunt-contrib-uglify/grunt-contrib-concat则没有安装。三个分别对于三个任务(task)

    • grunt-contrib-jshint js语法检查
    • grunt-contrib-uglify 压缩,采用UglifyJS
    • grunt-contrib-concat 合并文件

    此时,打开命令行工具进入到项目根目录,敲如下命令: npm install

     

    再查看根目录,发现多了个node_modules目录,包含了四个子目录,见图

     

    三、新建文件Gruntfile.js

    Gruntfile.js也是放在项目根目录下,几乎所有的任务都定义在该文件中,它就是一个普通的js文件,里面可以写任意js代码而不仅局限于JSON。和package.json一样它也要和源码一样被提交到svn或git。

     

    Gruntfile.js由以下内容组成

  • wrapper函数,结构如下,这是Node.js的典型写法,使用exports公开API
    module.exports = function(grunt) {
    // Do grunt-related things in here
    };
  • 项目和任务配置
  • 载入grunt插件和任务
  • 定制执行任务
  •  

    该示例完成以下任务

  • 合并src下的文件(ajax.js/selector.js)为domop.js
  • 压缩domop.js为domop.min.js
  • 这两个文件都放在dest目录下
  •  

    最终的Gruntfile.js如下

    module.exports = function(grunt) {
    // 配置
    grunt.initConfig({
    pkg : grunt.file.readJSON('package.json'),
    concat : {
    domop : {
    src: ['src/ajax.js', 'src/selector.js'],
    dest: 'dest/domop.js'
    }
    },
    uglify : {
    options : {
    banner : '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
    },
    build : {
    src : 'dest/domop.js',
    dest : 'dest/domop.min.js'
    }
    }
    });
    // 载入concat和uglify插件,分别对于合并和压缩
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    // 注册任务
    grunt.registerTask('default', ['concat', 'uglify']);
    };

     

    四、执行grunt任务

    打开命令行,进入到项目根目录,敲 grunt

    从打印信息看出成功的合并和压缩并生成了dest目录及期望的文件,这时的项目目录下多了dest,如下

     

    ok,Gruntjs的入门就介绍完了,这里只是介绍了2个常见任务concat和uglify,jshint等没有介绍。Gruntfile.js里的代码也没有一一解读,感兴趣的同学可在gruntjs的官方文档找到。

     

    相关:

    Bejs

    https://npmjs.org/doc/json.html 

    本文链接


        
    [2]【Web 开发必备】史上最全的浏览器 CSS & JS Hack 手册
        来源:    发布时间: 2013-11-06

      浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异。因此,浏览器兼容成为前端开发人员的必备技能。如果有一份浏览器 Hack 手册,那查询起来就方便多了。这篇文章就向大家分享 Browserhacks 帮我们从网络上收集的各个浏览器特定的 CSS & JavaScript Hack,记得推荐和分享啊!

    IE 选择器 Hack

    /* IE 6 and below */
    * html .selector {}
    .suckyie6.selector {} /* .suckyie6 can be any unused class */
    /* IE 7 and below */
    .selector, {}
    /* IE 7 */
    *:first-child+html .selector {}
    .selector, x:-IE7 {}
    *+html .selector {}
    /* Everything but IE 6 */
    html > body .selector {}
    /* Everything but IE 6/7 */
    html > /**/ body .selector {}
    head ~ /* */ body .selector {}
    /* Everything but IE 6/7/8 */
    :root *> .selector {}
    body:last-child .selector {}
    body:nth-of-type(1) .selector {}
    body:first-of-type .selector {}
    IE 属性/值 Hack

    /* IE 6 */
    .selector { _color: blue; }
    .selector { -color: blue; }
    /* IE 6/7 - acts as an !important */
    .selector { color: blue !ie; }
    /* string after ! can be anything */
    /* IE 6/7 - any combination of these characters:
    ! $ & * ( ) = % + @ , . / ` [ ] # ~ ? : < > | */
    .selector { !color: blue; }
    .selector { $color: blue; }
    .selector { &color: blue; }
    .selector { *color: blue; }
    /* ... */
    /* IE 8/9 */
    .selector { color: blue\0/; }
    /* must go at the END of all rules */
    /* IE 9/10 */
    .selector:nth-of-type(1n) { color: blue\9; }
    /* IE 6/7/8/9/10 */
    .selector { color: blue\9; }
    .selector { color/*\**/: blue\9; }
    /* Everything but IE 6 */
    .selector { color/**/: blue; }
    IE Media Query Hack

    /* IE 6/7 */
    @media screen\9 {}
    /* IE 8 */
    @media \0screen {}
    /* IE 9/10, Firefox 3.5+, Opera */
    @media screen and (min-resolution: +72dpi) {}
    /* IE 10+ */
    @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {}
    /* IE 6/7/8 */
    @media \0screen\,screen\9 {}
    /* IE 8/9/10 & Opera */
    @media screen\0 {}
    /* IE 9/10 */
    @media screen and (min-width:0\0) {}
    /* Everything but IE 6/7/8 */
    @media screen and (min-width: 400px) {}
    IE JavaScript Hack

    /* IE 6 */
    (checkIE = document.createElement("b")).innerHTML = "<!--[if IE 6]><i></i><![endif]-->";
    var isIE = checkIE.getElementsByTagName("i").length == 1;
    /* IE 7 */
    (checkIE = document.createElement("b")).innerHTML = "<!--[if IE 7]><i></i><![endif]-->";
    var isIE = checkIE.getElementsByTagName("i").length == 1;
    navigator.appVersion.indexOf("MSIE 7.")!=-1
    /* IE <= 8 */
    var isIE = '\v'=='v';
    /* IE 8 */
    (checkIE = document.createElement("b")).innerHTML = "<!--[if IE 8]><i></i><![endif]-->";
    var isIE = checkIE.getElementsByTagName("i").length == 1;
    /* IE 9 */
    (checkIE = document.createElement("b")).innerHTML = "<!--[if IE 9]><i></i><![endif]-->";
    var isIE = checkIE.getElementsByTagName("i").length == 1;
    /* IE 10 */
    var isIE = eval("/*@cc_on!@*/false") && document.documentMode === 10;
    /* IE 10 */
    var isIE = document.body.style.msTouchAction != undefined;
    Firefox 浏览器

      选择器 Hack

    /* Firefox 1.5 */
    body:empty .selector {}
    /* Firefox 2+ */
    .selector, x:-moz-any-link {}
    /* Firefox 3+ */
    .selector, x:-moz-any-link; x:default {}
    /* Firefox 3.5+ */
    body:not(:-moz-handler-blocked) .selector {}

     

      媒体查询 Hack

    /* Firefox 3.5+, IE 9/10, Opera */
    @media screen and (min-resolution: +72dpi) {}
    /* Firefox 3.6+ */
    @media screen and (-moz-images-in-menus:0) {}
    /* Firefox 4+ */
    @media screen and (min--moz-device-pixel-ratio:0) {}

     

      JavaScript Hack

    /* Firefox */
    var isFF = !!navigator.userAgent.match(/firefox/i);
    /* Firefox 2 - 13 */
    var isFF = Boolean(window.globalStorage);
    /* Firefox 2/3 */
    var isFF = /a/[-1]=='a';
    /* Firefox 3 */
    var isFF = (function x(){})[-5]=='x';
    Chrome 浏览器

      选择器 Hack

    /* Chrome 24- and Safari 5- */
    ::made-up-pseudo-element, .selector {}

      

      媒体查询 Hack

    /* Chrome, Safari 3+ */
    @media screen and (-webkit-min-device-pixel-ratio:0) {}

      

      JavaScript Hack

    /* Chrome */
    var isChrome = Boolean(window.chrome);

      

    Safari 浏览器

      选择器 Hack

    /* Safari 2/3 */
    html[xmlns*=""] body:last-child .selector {}
    html[xmlns*=""]:root .selector {}
    /* Safari 2/3.1, Opera 9.25 */
    *|html[xmlns*=""] .selector {}
    /* Safari 5- and Chrome 24- */
    ::made-up-pseudo-element, .selector {}

      

      媒体查询 Hack

    /* Safari 3+, Chrome */
    @media screen and (-webkit-min-device-pixel-ratio:0) {}

      

      JavaScript Hack

    /* Safari */
    var isSafari = /a/.__proto__=='//';

      

    Opera 浏览器

      选择器 Hack

    /* Opera 9.25, Safari 2/3.1 */
    *|html[xmlns*=""] .selector {}
    /* Opera 9.27 and below, Safari 2 */
    html:first-child .selector {}
    /* Opera 9.5+ */
        
    [3]经典网页设计:20个简约风格的电子商务网站
        来源:    发布时间: 2013-11-06

      电子商务是一个不断发展的行业,方便买卖双方。购物者可以在家里购买到自己需要的商品,而商家只需要管理一个网站,而不是一个完整的实体店。但是,当你发展你的网上商店时,其实是采用和设计一个实体店相同的方式,需要想想你的客户希望看到什么样的风格。这篇文章收集了20个简约风格的电子商务网站设计案例,希望能带给你灵感。

    您可能感兴趣的相关文章
    • 20个优秀的国外电子商务网站设计案例
    • 分享50个优秀的电子商务网站设计案例
    • 60佳优秀的国外电子商务网站设计案例
    • 25个国外优秀的电子商务网站设计案例
    • 10套精美的免费网站后台管理系统模板

     

    01. Shoe Guru

     

     

    02. The Few Gallery

     

     

    03. My Own Bike

     

     

    04. Tatchies

     

     

    05. Noon Style

     

     

    06. Spyder

     

     

    07. Hunter’s Wine Shop

     

     

    08. Hard Graft

     

     

    09. Soho Fixed

     

     

    10. Habitat Footwear

     

     

    11. Von Dutch

     

     

    12. Wire & Twine

     

     

    13. Storyville Coffee

     

     

    14. Famous 4th Street Cookie

     

     

    15. Converse

     

     

    16. Winestore

     

     

    Advertise Here

     

    17. Tinkering Monkey

     

     

    18. Blik

     

     

    19. Narwhal Co.

     

     

    20. Inkefx

     

     

    您可能感兴趣的相关文章

    • 分享35个非常漂亮的单页网站设计案例
    • 10套精美的免费网站后台管理系统模板
    • 25个国外优秀的餐饮网站设计案例欣赏
    • 25个国外优秀的电子商务网站设计案例
    • 12个优秀的 HTML5 网站设计案例欣赏

     

    本文链接

        
    最新技术文章:
    ▪css white-space:nowrap属性用法(可以强制文字不...
    ▪IE里button设置border:none属性无效解决方法
    ▪border:none与border:0使用区别
    ▪html清除浮动的6种方法示例
    ▪三个不常见的 HTML5 实用新特性简介
    ▪css代码优化的12个技巧
    ▪低版本IE正常运行HTML5+CSS3网站的3种解决方案
    ▪CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chr...
    ▪ie6,ie7,ie8完美支持position:fixed的终极解决方案
    ▪小技巧处理div内容溢出
    ▪html小技巧之td,div标签里内容不换行
    ▪纯CSS实现鼠标放上去改变文字内容
    ▪li中插入img图片间有空隙的解决方案
    ▪CSS3中Transition属性详解以及示例分享
    ▪父div高度不能自适应子div高度的解决方案
    ▪告别AJAX实现无刷新提交表单
    ▪从零学CSS系列之文本属性
    ▪HTML 标签
    ▪CSS3+Js实现响应式导航条
    ▪CSS3实例分享之多重背景的实现(Multiple background...
    ▪用css截取字符的几种方法详解(css排版隐藏溢...
    ▪页面遮罩层,并且阻止页面body滚动。bootstrap...
    ▪CSS可以做的几个令你叹为观止的实例分享
    ▪详细分析css float 属性以及position:absolute 的区...
    ▪IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解...
    ▪CSS小例子(只显示下划线的文本框,像文字一...
    ▪可以给img元素设置背景图
    ▪不通过JavaScript实现的自动滚动视差效果
    ▪div+CSS 兼容小摘
    ▪CSS的inherit与auto使用分析
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3