vue-cli3.0 + typescript搭建工程命辖,實現(xiàn)elm

github地址: https://github.com/nuonuoge/vue2-elm-ts 歡迎star

為什么使用ts
平時業(yè)務中一直使用angular開發(fā),ng使用的是typescript府寒,在現(xiàn)在這個市場下只懂一個框架感覺短板太大断凶,于是就學了vue和react伤提,已經(jīng)習慣使用ts,所以就在vue中延用了

TypeScript的優(yōu)勢

  1. 靜態(tài)輸入
    靜態(tài)類型化是一種功能认烁,可以在開發(fā)人員編寫腳本時檢測錯誤肿男。查找并修復錯誤是當今開發(fā)團隊的迫切需求。有了這項功能却嗡,就會允許開發(fā)人員編寫更健壯的代碼并對其進行維護舶沛,以便使得代碼質(zhì)量更好、更清晰窗价。

  2. 大型的開發(fā)項目
    有時為了改進開發(fā)項目如庭,需要對代碼庫進行小的增量更改。這些小小的變化可能會產(chǎn)生嚴重的撼港、意想不到的后果坪它,因此有必要撤銷這些變化。使用TypeScript工具來進行重構(gòu)更變的容易帝牡、快捷往毡。

  3. 更好的協(xié)作
    當發(fā)開大型項目時,會有許多開發(fā)人員靶溜,此時亂碼和錯誤的機也會增加开瞭。類型安全是一種在編碼期間檢測錯誤的功能,而不是在編譯項目時檢測錯誤罩息。這為開發(fā)團隊創(chuàng)建了一個更高效的編碼和調(diào)試過程嗤详。

  4. 更強的生產(chǎn)力
    干凈的 ECMAScript 6 代碼,自動完成和動態(tài)輸入等因素有助于提高開發(fā)人員的工作效率扣汪。這些功能也有助于編譯器創(chuàng)建優(yōu)化的代碼断楷。

vue配置
由于習慣了ng的三文件配置(.ts .html .css),所以在vue中也使用了三文件格式
目錄結(jié)構(gòu)

目錄

使用vue-cli3.0創(chuàng)建項目

  1. 配置vue.config.js
module.exports = {
  chainWebpack: config => {
    config.module
      .rule('ts')
      .test(/\.ts$/)
      .use('ts-loader')
      .loader('ts-loader')
      .end()
    config.module
      .rule('tsx')
      .test(/\.tsx?$/)
      .use('ts-loader')
      .loader('ts-loader')
      .end()
  },
  configureWebpack: {
    module: {
      rules: [{
        test: /\.html$/,
        loader: 'vue-template-loader',
        exclude: /index.html/,
        options: {
          transformAssetUrls: {
            video: ['src', 'poster'],
            source: 'src',
            img: 'src',
            image: 'xlink:href'
          },
          scoped: false
        }
      }],
    },
    resolve: {
      alias: {
        'vue$': 'vue/dist/vue.common.js'
      }
    }
  }
}
  1. 安裝
    vue-class-component
    vue-property-decorator
    vuex-class
    其他安裝包請參考項目中package.json文件

vue-property-decoratorvue-class-component 上增強了更多的結(jié)合 Vue 特性的裝飾器崭别,新增了這 7 個裝飾器:

  • @Emit
  • @Inject
  • @Model
  • @Prop
  • @Provide
  • @Watch
  • @Component (從 vue-class-component 繼承)
    vuex-class提供了Mutation State等裝飾器
    貼一段項目中的使用代碼
    order.ts

    3 $router $route .html .css 識別問題
    在項目中引入的時候創(chuàng)建一個 vue-shim.d.ts 文件
import Vue from 'vue';
import VueRouter, { Route } from 'vue-router';
declare module 'vue/types/vue' {
  interface Vue {
    $router: VueRouter; // 這表示this下有這個東西
    $route: Route;
  }
}

declare module '*.vue' {
  import Vue from 'vue';
  export default Vue;
}

declare module '*.html' {
  import Vue, { ComponentOptions, FunctionalComponentOptions } from 'vue'
  interface WithRender {
    <V extends Vue, U extends ComponentOptions<V> | FunctionalComponentOptions>(options: U): U
    <V extends typeof Vue>(component: V): V
  }
  const withRender: WithRender
  export default withRender
}

declare module '*.scss' {
  import Vue, { ComponentOptions, FunctionalComponentOptions } from 'vue'
  interface WithRender {
    <V extends Vue, U extends ComponentOptions<V> | FunctionalComponentOptions>(options: U): U
    <V extends typeof Vue>(component: V): V
  }
  const withRender: WithRender
  export default withRender
}

declare module '*.css' {
  import Vue, { ComponentOptions, FunctionalComponentOptions } from 'vue'
  interface WithRender {
    <V extends Vue, U extends ComponentOptions<V> | FunctionalComponentOptions>(options: U): U
    <V extends typeof Vue>(component: V): V
  }
  const withRender: WithRender
  export default withRender
}

未解決問題
目前項目中css不支持scoped冬筒,暫時未搞定,如果大家找到了解決方案茅主,求指導

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舞痰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子诀姚,更是在濱河造成了極大的恐慌响牛,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赫段,死亡現(xiàn)場離奇詭異呀打,居然都是意外死亡,警方通過查閱死者的電腦和手機糯笙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門贬丛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人给涕,你說我怎么就攤上這事豺憔。” “怎么了够庙?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵恭应,是天一觀的道長。 經(jīng)常有香客問我耘眨,道長昼榛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任剔难,我火速辦了婚禮胆屿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钥飞。我一直安慰自己莺掠,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布读宙。 她就那樣靜靜地躺著彻秆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪结闸。 梳的紋絲不亂的頭發(fā)上唇兑,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音桦锄,去河邊找鬼扎附。 笑死,一個胖子當著我的面吹牛结耀,可吹牛的內(nèi)容都是我干的留夜。 我是一名探鬼主播匙铡,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碍粥!你這毒婦竟也來了鳖眼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤嚼摩,失蹤者是張志新(化名)和其女友劉穎钦讳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枕面,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡愿卒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了潮秘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琼开。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖唇跨,靈堂內(nèi)的尸體忽然破棺而出稠通,到底是詐尸還是另有隱情,我是刑警寧澤买猖,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布改橘,位于F島的核電站,受9級特大地震影響玉控,放射性物質(zhì)發(fā)生泄漏飞主。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一高诺、第九天 我趴在偏房一處隱蔽的房頂上張望碌识。 院中可真熱鬧,春花似錦虱而、人聲如沸筏餐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽魁瞪。三九已至,卻和暖如春惠呼,著一層夾襖步出監(jiān)牢的瞬間导俘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工剔蹋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旅薄,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓泣崩,卻偏偏與公主長得像少梁,于是被迫代替她去往敵國和親洛口。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,201評論 0 6
  • 九月七號早上六點猎莲,我們提著大包小包绍弟,兩個皮箱技即,一包裹被子著洼,從樓上一趟一趟往車上放。 我早已裝好了三身衣裳而叼,一雙鞋子...
    李冰兒閱讀 418評論 2 8
  • 在我家里身笤,可以看到兩棵花,一棵是長壽花葵陵,另一棵也是長壽花液荸。 不同的是一棵開著紅色的小碎花,一棵開著黃色的小碎花脱篙。那...
    碾河閑人閱讀 410評論 0 1
  • 想必這兩天大家都被《前任3》刷屏過娇钱,抖音上經(jīng)常有那種看完電影后抱頭痛哭撕心裂肺的視頻。 朋友前一陣也分手了绊困,訴說里...
    地下有限空間閱讀 445評論 0 2