资讯专栏INFORMATION COLUMN

angular 配合 gulp开发项目

lakeside / 1006人阅读

最近在学习angular做后台管理项目,所以把记录一下开发流程。

准备工具

gulp --用来自动化构建项目
angular --搭建项目

开发目录

components

组件

css

样式

img

图片

lib

依赖的框架(angular、Jq等都放在里面)

scripts

app.js(主要是路由配置)

index.html

首页

HTML编写



    
        
        
        angularDemo
        
        
    

    
        
这里是头部

现在是{{pageName}}

app.js的编写
"use strict";
var app = angular.module("app", [
    "ui.router",
    "controller",
    "directive",
    "services",
    "templates"
]).config(["$stateProvider", "$urlRouterProvider", function($stateProvider, $urlRouterProvider) {
    $urlRouterProvider
    .otherwise(function(inject, location) {
        var path = location.$$path || "";
        return "/index";
    })
    $stateProvider.state("index", {
            url: "/index",
            controller: "indexCtr",
            templateUrl: "components/index/index.html"
    }).state("module2", {
            url: "/module2",
            controller: "module2Ctr",
            templateUrl: "components/module2/module2.html"
    }).state("module3", {
            url: "/module3",
            controller: "module3Ctr",
            templateUrl: "components/module3/module3.html"
    })

}]).run(["$rootScope", "$state", function(rootScope, state) {
    //初始化
}]);

angular.module("controller", []);
angular.module("directive", []);
angular.module("services", []);
angular.module("templates", []);
模块的写法

index.html

我是index.html

index.js

angular.module("controller")
    .controller("indexCtr", ["$scope", "$rootScope", "$http",  function($scope, $rootScope, $http) {
        var vm = $scope.vm = {};
        $rootScope.pageName = "index";
    }]);
packageJson
{
  "name": "angular",
  "version": "1.0.0",
  "description": "angualr with gulp",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "dev": "gulp",
    "build": "gulp build"
  },
  "repository": {
    "type": "git",
    "url": "https://git.coding.net/mumofa/angular_Gulp.git"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "browser-sync": "^2.12.8",
    "chokidar": "^1.5.1",
    "del": "^2.2.0",
    "event-stream": "^3.3.2",
    "gulp": "^3.9.1",
    "gulp-angular-templatecache": "^1.8.0",
    "gulp-concat": "^2.6.0",
    "gulp-minify-css":"^1.2.4",
    "gulp-sass": "^2.3.1",
    "gulp-uglify": "^1.5.3"
  }
}
gulp脚本编写
var gulp = require("gulp");
var concat = require("gulp-concat"); //合并文件
var minifycss = require("gulp-minify-css"); //压缩css
var templateCache = require("gulp-angular-templatecache"); //压缩 ng模板
var uglify = require("gulp-uglify"); // 压缩 代码
var es = require("event-stream"); // 事件插件
var del = require("del"); //删除
var browserSync = require("browser-sync"); // 自动刷新
var chokidar = require("chokidar"); //监听

//压缩依赖的js代码 
gulp.task("libScripts", function() {
    var scriptsGlob = ["app/lib/jQuery/*.js",
        "app/lib/bootstrap/*.js",
        "app/lib/angular/angular.min.js",
        "app/lib/**/*.js"
    ];
    return gulp.src(scriptsGlob)
        .pipe(uglify()) //压缩 js代码
        .pipe(concat("lib.min.js")) // 拼接成 一个js
        .pipe(gulp.dest("dist/js")) //输出到指定目录
});
//压缩ng代码
gulp.task("ngScripts", function() {
    var scriptsGlob = [
        "!app/lib/**/*.js",
        "app/scripts/app.js",
        "app/**/*.js"
    ];
    var tpl = gulp.src("app/**/*.html")
        .pipe(templateCache());

    /*return gulp.src(scriptsGlob)
        .pipe(uglify()) //压缩 js代码
        .pipe(concat("business.min.js")) // 拼接成 一个js
        .pipe(gulp.dest("dist/js")) //输出到指定目录*/
    return es.merge(es.merge(
                gulp.src(scriptsGlob),
                tpl
            )
//            .pipe(uglify())
//            .pipe(concat("business.min.js"))
            .pipe(concat("business.js")))
        .pipe(gulp.dest("dist/js"));
});
//输出HTML
gulp.task("distHtml",function(){
    return gulp.src("app/index.html")
        .pipe(gulp.dest("dist"))
});
//压缩css
gulp.task("minifyCss", function() {
    var cssSrc = [
        "app/css/bootstrap/**/*.css",
        "app/css/Font-Awesome/**/*.css",
        "app/css/system.css",
        "app/css/**/*.css"
    ];
    return gulp.src(cssSrc) //压缩的文件
        .pipe(minifycss()) //执行压缩
        .pipe(concat("all.min.css")) // 拼接成 一个js
        .pipe(gulp.dest("dist/css")); //输出到指定目录
});
//清空 输出
gulp.task("clean", function(cb) {
    del(["dist"], cb);
});
//gulp运行的时候
gulp.task("default", ["init"]);
gulp.task("watch",["watch:css","watch:ng","watch:html"]);
gulp.task("init", ["libScripts","distHtml", "ngScripts", "minifyCss"]);

gulp.task("browser-sync", ["init","watch"], function() {
    browserSync.init({
        server: {
            baseDir: ["app"]
        },
        middleware: [function(req, res, next) {
            next();
        }],
        port: 80
    });
});

//监听css
gulp.task("watch:css", function() {
    var cssSrc = [
        "app/css/bootstrap/**/*.css",
        "app/css/Font-Awesome/**/*.css",
        "app/css/system.css",
        "app/css/**/*.css"
    ];
    gulp.watch(cssSrc,["minifyCss"], browserSync.reload);
});
//监听js和html模板
gulp.task("watch:ng", function() {
    var jsSrc = [
        "!app/lib/**/*.js",
        "app/scripts/app.js",
        "app/**/*.js"
    ];
    var tplSrc = "app/**/*.html";
    gulp.watch(jsSrc,["ngScripts"], browserSync.reload);
    gulp.watch(tplSrc,["ngScripts"], browserSync.reload);
});
//监听html
gulp.task("watch:html", function() {
    var htmlSrc = ["app/index.html"];
    gulp.watch(htmlSrc,["distHtml"], browserSync.reload);
});

process.on("uncaughtException", function(e){console.log(e.stack)})
最后项目演示

基本上按照上述流程,都可以正常开发项目了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79635.html

相关文章

  • angular1配合gulp和bower使用

    摘要:需要在每次发布前删除和目录总任务服务启动一个服务器服务器从哪个路径开始读取,默认从开发路径读取自动刷新打开浏览器监听定义任务 一 安装gulp和bower gulp安装: npm install -g gulp bower安装: npm install -g bower ==注:== angularjs的一些包文件我们是通过bower来管理的 二 bower使用 使用bower初始化...

    JasonZhang 评论0 收藏0
  • AngularJS简述

    流行框架 简介 angularjs是一款非常优秀的前端高级JS框架,由谷歌团队开发维护,能够快速构建单页web应用,化繁为简 无论是angularjs还是jQuery都是用原生JS封装的 库:对代码进行封装,调用封装的方法,简化操作 传统方式是用get方式获取元素,然后点方法 jQuery库实现了对获取方式的封装,对方法的封装 框架:提供代码书写规则,按照规则去写代码,框架会帮我们实现响应的功能...

    Jason 评论0 收藏0
  • 2017年前端框架、类库、工具大比拼

    摘要:相比于开发人员的数量,目前框架类库和工具的数量似乎更多一些。本文将会讨论目前最为流行的客户端框架类库和工具以及它们之间的基本差异。典型的类库包括字符串处理日期元素事件动画网络请求等功能。所以不需要明确的区分类库框架和工具。 相比于JavaScript开发人员的数量,目前JavaScript框架、类库和工具的数量似乎更多一些。截至2017年5月,GitHub上的快速搜索显示,有超过110...

    Alliot 评论0 收藏0
  • 使用gulp+bower构建Angular.js项目

    摘要:本文重点是详细介绍项目的构建。是优秀的自动化项目构建工具,我们将用它完成等文件的的测试检查合并压缩格式化浏览器自动刷新部署文件生成,并监听文件在改动后重复指定的这些步骤热重载。是项目依赖管理工具。环境需求运行在环境,首先安装。 本文重点是详细介绍Angular.js项目的构建。gulp是优秀的自动化项目构建工具,我们将用它完成 javascript/less/css/html/imag...

    roland_reed 评论0 收藏0
  • 个人博客主页搭建随笔

    摘要:博主目前的这个项目还不算很大,模块依赖简单,但期望完成诸如版本号替换,压缩代码,合并文件,发布到服务器等和模块化关系不大的工作,所以使用了。同时,对和附加缓存,配合和版本号实现服务器更新,这一部分其实已经帮我们实现好了。 经常在各种论坛、博客还有 github 上活跃的朋友不难发现,许多大牛都有自己的网站,也多以博客为主。博主作为一个立志前端的大白,难道不应该和大牛学习么?说干就干,前...

    whjin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<