国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解webpack+es6+angular1.x項(xiàng)目構(gòu)建

2019-11-19 16:41:00
字體:
供稿:網(wǎng)友

技術(shù)棧概述

ES2015(ES6)

大名ES2015,顧名思義是 ECMAScript 在2015年6月正式發(fā)布的一套標(biāo)準(zhǔn)。小名ES6,意為ECMAScript第六次變更。(JavaScript 是 ECMAScript 規(guī)范的一種實(shí)現(xiàn))。如今已慢慢替代ES5,成為JS主流的開發(fā)規(guī)范,新增很多語法糖,大大提高開發(fā)效率。

webpack

一款模塊化的構(gòu)建工具,對(duì)ES6的構(gòu)建更加友好,不詳細(xì)介紹了。

angular

一款MV*框架,本次用的是angular的1.6.4版本,即angular1.x版本中的最高版,也可以看作是2的過渡版吧。

eslint

ESLint是一個(gè)QA工具,用來避免低級(jí)錯(cuò)誤和統(tǒng)一代碼的風(fēng)格。尤其是多人開發(fā)的情境下,規(guī)范代碼,統(tǒng)一風(fēng)格是非常重要的。即便每個(gè)人負(fù)責(zé)自己的模塊,在實(shí)際執(zhí)行的時(shí)候也難免有交集。eslint簡(jiǎn)單的講,就是讓自己少犯錯(cuò),也讓隊(duì)友更容易的看懂你的代碼。

本項(xiàng)目,選擇的是ESlint的推薦配置,唯一注意的是全局變量中把a(bǔ)ngular的關(guān)鍵詞加上。因?yàn)橛玫搅薳s7的async等東西,除了webpack里babel的配置要到位,eslint里面也要配置相關(guān)解析,即:

module.exports = { "env": {  "browser": true,  "commonjs": true,  "es6": true }, "extends": "eslint:recommended", "parserOptions": {  "sourceType": "module" }, "globals": {  "angular": true// angular關(guān)鍵詞 }, "parser": "babel-eslint", // 解析es7 "rules": {  "no-console": 0,  "quotes": [   "error",   "single"  ] }};

eslint是很靈活的,可以自己按需配置,本項(xiàng)目都是用的官方推薦配置。

項(xiàng)目結(jié)構(gòu)

commonComponents

公共組件目錄,放一些二次封裝的table等等'片段式'的html。

components

頁面組件目錄,因?yàn)槭菃雾撁鎽?yīng)用,這里面放置的也就是各個(gè)頁面了,把每個(gè)頁面封裝成'大'組件,里面由各自的html和'小'組件拼接而成。

config

路由,URL等等可配置的管理目錄。

css

項(xiàng)目的公用樣式目錄。具體到組件的樣式,會(huì)在各個(gè)組件里面具體寫。比如login組件。

image

圖片目錄。所有圖片統(tǒng)一在這里管理。

server

服務(wù)目錄。對(duì)項(xiàng)目的一些公用服務(wù)進(jìn)行封裝,比如二次封裝http服務(wù)。這個(gè)目錄,還可以細(xì)分,比如將angular的provider,service,value等等再進(jìn)行劃分。

項(xiàng)目入口

app.js

import 'babel-polyfill';import angular from 'angular';import uiRouter from 'angular-ui-router';import components from './components';import services from './server'import commonComponents from './commonComponents';import appRouter from './config/app.router';import './css/main.less';import style from './app.less';let appComponent = {  restrict: 'E',  template: require('./app.html'),  controller: function () {    this.class = style;  },  controllerAs: 'app'};export default angular.module('sass', [uiRouter, components, services, commonComponents])  .config(appRouter)  .component('app', appComponent)  .name;

除了引入angular,還引入了ui-router,因?yàn)樵穆酚桑恢С忠晥D的嵌套。components, services, commonComponents是各自組建服務(wù)的匯總,前面已介紹。

寫一個(gè)頁面組件

下面以登陸頁面為例。一個(gè)組件頁面由4個(gè)文件組成,分別是index.js(此頁面組件的出口,也是其余邏輯,樣式的入口)

import loginCtrl from './login'import tem from './login.html';export default angular.module('login', []) .component('login', {  template: tem,  controller: loginCtrl }) .name;

login.js(頁面的業(yè)務(wù)邏輯在這里)

 import url from '../../config/system.js';class loginCtrl {  static $inject = ['http'];  constructor(http) {    [this.http, this.name] = [http, `login`];    this.str = `str${this.name}`;  }  login() {     this.http.get({userName: 'link', userPassword: '123456'}, url.login, (data) => {        console.info("success!")     });    }}export default loginCtrl;

這個(gè)類主要完成的業(yè)務(wù)就是發(fā)送一個(gè)登陸http請(qǐng)求,這里的http是二次封裝的一個(gè)服務(wù),與注入原生依賴無異,有兩種注入方式,一種是上邊的在class中調(diào)用靜態(tài)方法。即static $inject = ['http'];

另一種是loginCtrl.$inject = ['http'];(class不存在變量提升,確保寫在class定義之后)

login.less(跟次登陸頁面相關(guān)的樣式,不貼代碼了)。這樣就寫好了一個(gè)頁面組件,由index.js輸出出去,輸出到哪里呢?

統(tǒng)一管理頁面組件

在剛剛components目錄下寫好的login頁面組件目錄的同級(jí),建立一個(gè)index.js,作用是用來統(tǒng)一管理組件頁面。即:

import login from './login';import register from './register';export default angular.module('components', [  login,  register]).name;

然后再將這個(gè)頁面輸出到最開始的app.js。即,app.js中引入的components。其他同理,將服務(wù),過濾器等等都統(tǒng)一以相關(guān)文件管理匯總起來,再由入口文件引入。

類似于一種樹形的結(jié)構(gòu):

以上,就簡(jiǎn)單的構(gòu)建好了一個(gè)webpack+es6+angular1.x的項(xiàng)目。

項(xiàng)目地址參考:https://github.com/jiwenjiang/angularSeed

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江门市| 潜山县| 泽库县| 正镶白旗| 天台县| 潢川县| 云龙县| 佛教| 颍上县| 丰城市| 古浪县| 汝州市| 昌宁县| 西贡区| 长泰县| 彭山县| 井冈山市| 遂川县| 宜兴市| 娄底市| 湖南省| 柳江县| 长葛市| 黄石市| 乌兰察布市| 林甸县| 军事| 栖霞市| 连平县| 年辖:市辖区| 舞钢市| 吉安市| 富锦市| 肃南| 洪洞县| 阳泉市| 安化县| 东丰县| 淳化县| 化德县| 灵宝市|