• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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
    主站蜘蛛池模板: 久久99久久99精品免视看动漫| 国产麻豆一精品一AV一免费| 日本一卡精品视频免费| 成人午夜精品久久久久久久小说 | 999国内精品永久免费观看| 国产精品自产拍在线观看花钱看| 国产成人精品久久一区二区三区| 无码囯产精品一区二区免费| 欧美精品一区二区三区免费观看| 亚洲精品电影网| 国产精品亚洲片在线va| 国产AV午夜精品一区二区入口 | 久久国产欧美日韩精品 | 精品无码国产污污污免费网站国产| 国产精品久久久福利| 精品国精品无码自拍自在线| 亚洲国产精品无码专区在线观看| 亚洲电影日韩精品 | 四虎影永久在线观看精品| 国产亚洲色婷婷久久99精品| 亚洲综合精品网站在线观看| 久久久久久久久久免免费精品| 人精品影院| 2024最新国产精品一区| 国产精品爽爽va在线观看网站| jizzjizz国产精品久久| 国产精品看高国产精品不卡| 国内精品伊人久久久久av一坑| 人人妻人人澡人人爽人人精品97| 无码日韩精品一区二区免费暖暖 | 亚洲麻豆精品国偷自产在线91| 久久久久久亚洲精品不卡| 精品福利一区二区三区| 国模精品一区二区三区| 精品国产污污免费网站入口| 精品无码国产自产拍在线观看蜜 | 久久精品国产精品亚洲精品| 九九在线精品视频专区| 精品久久久久久久| 影视网欧洲精品| 国产精品美女久久久久AV福利|