<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        詳解如何使用webpack+es6開發angular1.x

        來源:懂視網 責編:小采 時間:2020-11-27 22:32:30
        文檔

        詳解如何使用webpack+es6開發angular1.x

        詳解如何使用webpack+es6開發angular1.x:雖然,現在越來越多的人選擇使用react、vue以及ng2,但是依然存在相當一部分人在使用angular1.x開發。本文將介紹如何使用webpack+es6+angular1.x+$oclazyLoad實現動態加載。 1.webpack webpack.config.js var path = requ
        推薦度:
        導讀詳解如何使用webpack+es6開發angular1.x:雖然,現在越來越多的人選擇使用react、vue以及ng2,但是依然存在相當一部分人在使用angular1.x開發。本文將介紹如何使用webpack+es6+angular1.x+$oclazyLoad實現動態加載。 1.webpack webpack.config.js var path = requ

        雖然,現在越來越多的人選擇使用react、vue以及ng2,但是依然存在相當一部分人在使用angular1.x開發。本文將介紹如何使用webpack+es6+angular1.x+$oclazyLoad實現動態加載。

        1.webpack

        webpack.config.js

        var path = require('path');
        
        var webpack = require('webpack');
        
        var ExtractTextPlugin = require("extract-text-webpack-plugin");
        
        module.exports = {
         entry: {
         home: [
         'babel-polyfill',
         './app/app.js' //引入文件
         ],
         common: [
         'babel-polyfill',
         'angular', 
         'angular-ui-router', 
         'oclazyload'
         ]
         },
         output: {
         path: path.join(__dirname, '/wap'),
         filename: '[name].js',
         chunkFilename: '[id].build.js?[chunkhash]',
         publicPath: '/wap/',
         },
         module: {
         loaders: [
         {
         test:/\.js?$/,
         loader:'ng-annotate-loader!babel-loader',
         exclude:/node_modules/
         },
         {
         test: /\.html$/,
         loader: 'raw-loader',
         exclude: /node_modules/
         },
         ]
         },
         resolve: {
         root: ['node_modules'],
         extensions: ['', '.js', '.html', '.json'],
         modulesDirectories: ['node_modules'],
         alias: {}
         },
         externals: {},
         plugins: [
         new webpack.HotModuleReplacementPlugin(),
         new ExtractTextPlugin('[name].[contenthash:20].css'),
         new webpack.optimize.UglifyJsPlugin({
         compress: {warnings: false},
         sourceMap: true
         }),
         new webpack.optimize.CommonsChunkPlugin('common', 'common.js')
         ]
        
        }
        
        

        2.Module

        第一步,先引入angular ,以及相關模塊,然后像es5中那樣定義一個模塊

        app.js

        import angular from 'angular';
        import uirouter from 'angular-ui-router';
        import ocLazyLoad from 'oclazyLoad';
        angular.module('app',[ uirouter,ocLazyLoad ])

        模塊與模塊之間引用

        我們建立第二個模塊 header/index.js

        import angularfrom 'angular';
        export default angular.module('header',[]).name

        修改app.js

        import header from './header'
        angular.module('app',[ uirouter,ocLazyLoad , header])

        模塊的引用完成

        3.控制器

        假設在header目錄下新增一個控制器

        header/controller.js

        export default class HeaderController {
         consturctor(){
         this.home = 'header'
         }
        }

        引用控制器 修改 header/index.js

        import HeaderController from './controller'
        export default angular.module('header',[ ])
         .controller('HeaderController',HeaderController)
         .name

        4.服務

        如果要在控制器內使用$scope,或者其他服務肯定是報錯的,那是因為我們在使用之前沒有注入服務

        所以第一步應該注入服務

        header/controller.js

        export default class HeaderController {
         consturctor($scope){
         this.home = 'header'
         $scope.component = 'head'
         }
        }
        HeaderController.$inject = ['$scope']

        那么如何自定義服務呢?

        新建 header.server.js

        class HeaderServices {
         constructor(){
         this.name = 'cxh'
         }
         getName(){
         return this.name
         }
        }

        header/index.js

        import HeaderService from './service';
        export default angular.module('header',[ ])
         .controller('HeaderController',HeaderController)
         .service('HeaderService',HeaderService)
         .name

        在控制器中使用自定義服務

        header/controller.js

        export default class HeaderController {
         consturctor($scope,HeaderService){
         this.home = 'header'
         $scope.component = 'head'
         $scope.name = HeaderService.getName
         }
        }
        HeaderController.$inject = ['$scope','HeaderService']

        5.指令

        新建 footer/index.js 大致和 header/index.js相同

        將 footer模塊 引入到 app.js

        新建footer/directive.js

        export default class Footer {
         constructor(){
         this.restrict = 'E',
         this.scope = {},
         this.template = "<div ng-click='alert()'>footer</div>"
         this.controller = Foot
         this.link = (scope, element, attr) => {}
         }
        }
        class Foot{
         constructor(){
         $scope.alert = () => { alert(1) } 
         }
        }
        Header.$inject = ['$scope']

        footer/index.js

        export default angular.module('footer',[])
        .directive('footerDirective',()=> new Footer)
        .name

        6.路由

        router.js

        export default router ($stateProvider, $urlRouterProvider) {
         $stateProvider.state("home",{ 
         url:"/home",
         templateUrl:'app/home/home.html',
         controller: "HomeController",
         controllerAs:"HMC",
         })
         $urlRouterProvider.otherwise('/home');
        }
        router.$inject = [ '$stateProvider', '$urlRouterProvider']

        DEMO 實現動態加載

        1.第一步,新建app.js創建一個module

        import angular from 'angular';
        import uirouter from 'angular-ui-router';
        import ocLazyLoad from 'oclazyLoad';
        //引用創建頭部 組件
        import Header from './header';
        //路由
        import routing from "./router.js";
        //引入兩個子模塊
        import Home from "./homes";
        import Router from "./router";
        
        angular.module('app',[uirouter, Header, ocLazyLoad, Home, Router])
        .config(routing)
        

        2.配置路由 ./route.js

        export default function routing($stateProvider, $urlRouterProvider) {
         'ngInject'; //注入服務 就不需要使用$inject了
         $stateProvider
         .state("home",{
         url:"/home",
         templateProvider: ($q) => { //動態引入html模板
         'ngInject';
         let deferred = $q.defer();
         require.ensure([], function () {
         let template = require('./home/home.html');
         deferred.resolve(template);
         });
         return deferred.promise;
         },
         controller: "HomeController",
         controllerAs:"HMC",
         resolve: { //動態加載模塊
         loadMyCtrl: function ($q, $ocLazyLoad) {
         'ngInject';
         let deferred = $q.defer();
         require.ensure([], () => {
         let module = require("./home").default;
         $ocLazyLoad.load({name: module.name});
         deferred.resolve(module.controller)
         });
         return deferred.promise;
         }
         }
         }),
         .state("route",{
         url:"/route",
         templateProvider: ($q) => { //動態引入html模板
         'ngInject';
         let deferred = $q.defer();
         require.ensure([], function () {
         let template = require('./router/router.html');
         deferred.resolve(template);
         });
         return deferred.promise;
         },
         controller: "routerController",
         controllerAs:"RTC",
         resolve: { //動態加載模塊
         loadMyCtrl: function ($q, $ocLazyLoad) {
         'ngInject';
         let deferred = $q.defer();
         require.ensure([], () => {
         let module = require("./router").default;
         $ocLazyLoad.load({name: module.name});
         deferred.resolve(module.controller)
         });
         return deferred.promise;
         }
         }
         })
        $urlRouterProvider.otherwise('/home');
        }
        

        3.header

        header/index.js

        import angular from "angular";
        import header from './directive';
        export default angular.module('app_header',[])
         .directive('header', () => new header)
         .name;

        header/directive.js

        class Header {
         constructor($scope){
         'ngInject';
         $scope.isshow = false;
         }
        }
        export default class header {
         constructor() {
         this.restrict = 'E',
         this.scope = {},
         this.template = require(./header.html) 
         this.controller = Header
         this.link = (scope, element, attr) => {}
         }
        }
        

        header/header.html

        <div>
         <a href="#home" rel="external nofollow" >home</a>
         <a href="#router" rel="external nofollow" >router</a>
        </div>
        

        4.home

        home/index.js

        import angular from "angular";
        import HomeController from './controller';
        export default angular.module('app_home',[])
         .controller('HomeController', HomeController)

        home/controller.js

        export default class HomeController {
         constructor($scope) {
         'ngInject';
         this.isshow = false;
         this.eage = 'sds';
         $scope.edg = 'sma'
         }
         change(){
         this.isshow = !this.isshow;
         console.log(this.isshow);
         }
        }

        home/home.html

        <div>home {{HMC.eage}} -- {{edg}}</div>

        其余的模塊大同小異就不依依去寫了。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        詳解如何使用webpack+es6開發angular1.x

        詳解如何使用webpack+es6開發angular1.x:雖然,現在越來越多的人選擇使用react、vue以及ng2,但是依然存在相當一部分人在使用angular1.x開發。本文將介紹如何使用webpack+es6+angular1.x+$oclazyLoad實現動態加載。 1.webpack webpack.config.js var path = requ
        推薦度:
        標簽: ES6 webpack angular1.x
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产亚洲视频在线观看网址| 亚洲三级在线播放| 五月亭亭免费高清在线| 一级女人18毛片免费| 国产又大又黑又粗免费视频 | 亚洲成人影院在线观看| 亚洲国产AV一区二区三区四区 | 亚洲激情视频在线观看| 无码人妻久久一区二区三区免费| 国产亚洲美女精品久久久2020| xxxxx做受大片在线观看免费 | 国产精品视频免费一区二区三区| 亚洲乱理伦片在线观看中字| a视频在线免费观看| 毛片网站免费在线观看| 久久综合久久综合亚洲| 日韩电影免费在线观看网站 | 亚洲成人一区二区| jizz免费观看| 久久精品国产亚洲av麻豆小说| 免费人人潮人人爽一区二区| 亚洲阿v天堂在线2017免费| 二区久久国产乱子伦免费精品| 亚洲人成网77777亚洲色 | 99久久免费看国产精品| 亚洲av无码国产综合专区| 国产视频精品免费| 久久久久久国产a免费观看不卡| 免费激情视频网站| 一道本不卡免费视频| 久久亚洲精品成人综合| 欧美日韩国产免费一区二区三区| 国产亚洲欧美在线观看| 亚洲日本va中文字幕久久| 最近2019年免费中文字幕高清| 国产精品亚洲成在人线| 一区二区三区在线免费观看视频| 亚洲成AV人片在线观看无码| 中文字幕无码不卡免费视频 | 免费观看亚洲人成网站| 国产成人综合亚洲亚洲国产第一页 |