国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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 | 亚洲第一页在线播放 | 亚洲欧洲日韩国产 | 国产欧美日韩精品第二区 | 亚洲高清在线观看 | 91网红福利精品区一区二 | 久久成人国产精品免费 | 精品欧美一区手机在线观看 | 成人亚洲综合 | 亚洲欧美日本在线观看 | 在线观看国产视频 | 欧美日韩亚洲高清不卡一区二区三区 | 黄色毛片视频 | 国产日韩在线播放 | 91精品国产9l久久久久 | 亚洲原创区 | 欧美日本一道本 | 亚洲第一视频网站 | 素人面接| 九九热国产 | 久久永久免费视频 | 午夜精品一区二区三区在线视 | 欧美成人伊人久久综合网 | 亚洲精品一二三四区 | 免费国产一区 | 久久国产毛片 | 国产一区二区精品久 | 亚洲精品在线第一页 | 在线v片 | 亚洲欧美偷拍另类 | 久久久久无码国产精品一区 | 黄a毛片| 亚洲欧洲第一页 | 在线 v亚洲 v欧美v 专区 | 国产日韩欧美 |