设为首页 收藏本站
查看: 1533|回复: 0

[经验分享] angularjs项目下的gulp配置(一)

[复制链接]

尚未签到

发表于 2017-2-24 13:09:27 | 显示全部楼层 |阅读模式
  这是我的一个线上产品的真正gulp配置,可能不是最好的解决方案,但却是一个能用的方案

  首先我们需要nodejs环境,没有安装过的同学,请参照nodejs官方文档,下载相应的安装包安装即可,我当前使用的nodejs版本为4.2.6 LTS。这里假设已经安装好了nodejs环境,下面开始介绍gulp。

gulp安装
  1、全局安装gulp,这个是在命令行中执行用的。
  

$ npm install -g gulp  

  2、 在项目根目录下安装gulp,这个是在gulp配置文件中用的。
  

$ npm install --save-dev gulp  

  3、在项目根目录下创建一个名为gulpfile.js的配置文件,添加一些简单的内容如下。
  

var gulp = require('gulp');  

  
gulp.task('default', function() {
  // 将你的默认的任务代码放在这
  
});
  

  4、运行gulp。
  

$ gulp  

  执行这行命令,将会运行默认名为 default 的任务(task),它和执行gulp default是一样的,在这里,这个任务并未做任何事情。想要单独执行特定的任务(task),请输入 gulp <task>。请注意,中间是有空格的哦。

  到这里,你已经学会如何安装gulp环境,接下来我们将开始配置一个运行angular环境的gulpfile.js。


gulp插件
  首先我们先来看看用到了哪些gulp的插件
var gulp = require('gulp'),  del = require('del'),
  //autoprefixer = require('gulp-autoprefixer'),
  changed = require('gulp-changed'),
  concat = require('gulp-concat'),
  //connect = require('gulp-connect'),
  htmlReplace = require('gulp-html-replace'),
  htmlmin = require('gulp-htmlmin'),
  inject = require('gulp-inject'),
  jshint = require('gulp-jshint'),
  //livereload = require('gulp-livereload'),
  ngHtml2js = require('gulp-ng-html2js'),
  minifyCss = require('gulp-minify-css'),
  ngAnnotate = require('gulp-ng-annotate'),
  rename = require('gulp-rename'),
  replace = require('gulp-replace'),
  rev = require('gulp-rev'),
  sass = require('gulp-sass'),
  sequence = require('gulp-sequence'),
  //sourcemaps = require('gulp-sourcemaps'),
  uglify = require('gulp-uglify');
  这里我们重点介绍一下angular相关插件
gulp-ng-html2js  
gulp-ng-annotate

gulp-ng-html2js
  gulp-ng-html2js是一个处理angular里templateCache的插件,它会把所有的html模板合并存储到一个js当中,用法如下
gulp.task('build-html', function () {  return gulp.src(['src/app/**/*.html', 'src/common/**/*.html'])
  .pipe(htmlmin())
  .pipe(ngHtml2js({
  moduleName: 'template-app'
  }))
  .pipe(concat('template.tpl.js'))
  .pipe(gulp.dest(buildDir + '/js'));
  
});
  执行gulp build-html后生成的template.tpl.js的代码如下,这里只列举出一部分
(function(module) {  
try {
  module = angular.module('template-app');
  
} catch (e) {
  module = angular.module('template-app', []);
  
}
  
module.run(['$templateCache', function($templateCache) {
  $templateCache.put('create/header/navBtn.tpl.html',

  '<li ng-class=&quot;{\'active\': isMe()}&quot; ng-click=&quot;showMe()&quot;><div ng-transclude></div><i ng-show=&quot;isMe()&quot;>  
}]);
  
})();
  

  
(function(module) {
  
try {
  module = angular.module('template-app');
  
} catch (e) {
  module = angular.module('template-app', []);
  
}
  
module.run(['$templateCache', function($templateCache) {
  $templateCache.put('create/sideMenu/background.tpl.html',

  '<div>  
}]);
  
})();
  可以看到html模板里的内容都被放到templateCache里方便我们使用了,当然,这里只是举一个例子,真正的html内容肯定不只是这么一点了,大家不用太纠结。

gulp-ng-annotate
  gulp-ng-annotate是一个处理angularjs依赖注入的插件,它的用法如下
  

gulp.task('build-app-js', function () {  return gulp.src('src/app/**/*.js')
  .pipe(ngAnnotate({single_quotes: true}))
  .pipe(gulp.dest(buildDir + '/js/app'));
  
});
  

  正常我们写angular代码是这样子的
  

angular.module('app', [])  .controller('AppCtrl', ['$scope', function($scope) {
  // 别的代码
  }])
  

  但使用了这个插件之后,每一个依赖注入的项就不用再写两遍了,如
  

angular.module('app', [])  .controller('AppCtrl', function($scope) {
  // 别的代码
  })
  

  gulp-ng-annotate会帮我们生成带中括号的写法 ,这样子是不是节省了很多重复工作呢?尤其是在注入的服务非常多的时候,可以少写很多代码,并且也不用担心顺序有没有写错。

  今天我们先介绍到这,重点介绍了和angularjs相关的两个插件,可能有些同学还不知道,同时也欢迎大家吐槽。
  



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346709-1-1.html 上篇帖子: 区块链技术(一):Truffle开发入门 下篇帖子: Windows下使用Visual Studio Code搭建Go语言环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表