最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3.x源碼調(diào)試的實(shí)現(xiàn)方法

 更新時(shí)間:2019年10月13日 09:13:24   作者:徐志偉醬  
這篇文章主要介紹了Vue3.x源碼調(diào)試的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

幾句話說(shuō)下我看源碼的方式

斷點(diǎn)調(diào)試

根據(jù)demo小例子或者api的使用姿勢(shì)進(jìn)行調(diào)試,每個(gè)小例子只關(guān)心其走過(guò)的邏輯分支。

如何調(diào)試vue3.x的ts源碼

  • 官網(wǎng)說(shuō)使用 yarn dev 命令就可以對(duì)其進(jìn)行調(diào)試,可是運(yùn)行該命令后,是生成過(guò)后的代碼,不能對(duì)其編寫(xiě)的ts源碼進(jìn)行調(diào)試。
  • 其實(shí)再生成對(duì)應(yīng)的sourcemap文件,便可以原汁原味的調(diào)試。
  • 先看下幾個(gè)截圖:

 

如果這是你想要的調(diào)試效果,下面請(qǐng)看下如何生成sourcemap文件。

生成sourcemap文件

rollup.js中文文檔

// rollup.config.js
export default {
 // 核心選項(xiàng)
 input,   // 必須
 external,
 plugins,

 // 額外選項(xiàng)
 onwarn,

 // danger zone
 acorn,
 context,
 moduleContext,
 legacy

 output: { // 必須 (如果要輸出多個(gè),可以是一個(gè)數(shù)組)
  // 核心選項(xiàng)
  file,  // 必須
  format, // 必須
  name,
  globals,

  // 額外選項(xiàng)
  paths,
  banner,
  footer,
  intro,
  outro,
  sourcemap,
  sourcemapFile,
  interop,

  // 高危選項(xiàng)
  exports,
  amd,
  indent
  strict
 },
};

可以看到output對(duì)象有個(gè)sourcemap屬性,其實(shí)只要配置上這個(gè)就能生成sourcemap文件了。 在vue-next項(xiàng)目中的rollup.config.js文件中,找到createConfig函數(shù)

function createConfig(output, plugins = []) {
 const isProductionBuild =
  process.env.__DEV__ === 'false' || /\.prod\.js$/.test(output.file)
 const isGlobalBuild = /\.global(\.prod)?\.js$/.test(output.file)
 const isBunlderESMBuild = /\.esm\.js$/.test(output.file)
 const isBrowserESMBuild = /esm-browser(\.prod)?\.js$/.test(output.file)

 if (isGlobalBuild) {
  output.name = packageOptions.name
 }

 const shouldEmitDeclarations =
  process.env.TYPES != null &&
  process.env.NODE_ENV === 'production' &&
  !hasTSChecked

 const tsPlugin = ts({
  check: process.env.NODE_ENV === 'production' && !hasTSChecked,
  tsconfig: path.resolve(__dirname, 'tsconfig.json'),
  cacheRoot: path.resolve(__dirname, 'node_modules/.rts2_cache'),
  tsconfigOverride: {
   compilerOptions: {
    declaration: shouldEmitDeclarations,
    declarationMap: shouldEmitDeclarations
   },
   exclude: ['**/__tests__']
  }
 })
 // we only need to check TS and generate declarations once for each build.
 // it also seems to run into weird issues when checking multiple times
 // during a single build.
 hasTSChecked = true

 const externals = Object.keys(aliasOptions).filter(p => p !== '@vue/shared')

 output.sourcemap = true // 這句話是新增的
 return {
  input: resolve(`src/index.ts`),
  // Global and Browser ESM builds inlines everything so that they can be
  // used alone.
  external: isGlobalBuild || isBrowserESMBuild ? [] : externals,
  plugins: [
   json({
    namedExports: false
   }),
   tsPlugin,
   aliasPlugin,
   createReplacePlugin(
    isProductionBuild,
    isBunlderESMBuild,
    isGlobalBuild || isBrowserESMBuild
   ),
   ...plugins
  ],
  output,
  onwarn: (msg, warn) => {
   if (!/Circular/.test(msg)) {
    warn(msg)
   }
  }
 }
}

加上一句output.sourcemap = true即可。 然后運(yùn)行 yarn dev,可以看到vue/dist/vue.global.js.map文件已生成。 再然后你在xxx.html通過(guò)script的方式引入vue.global.js文件,即可調(diào)試, 效果如上圖。

弱弱的說(shuō)一句,我對(duì)ts和rollup.js不熟,幾乎陌生,但是不影響學(xué)習(xí)vue3.x源碼。 vue3.x的源碼這次分幾個(gè)模塊編寫(xiě)的,所以學(xué)習(xí)也可以分模塊學(xué)習(xí),比如學(xué)習(xí)響應(yīng)式系統(tǒng),運(yùn)行yarn dev reactivity命令生成對(duì)應(yīng)文件,然后配合__tests__下的案列,自己進(jìn)行調(diào)試學(xué)習(xí)。(額,好像說(shuō)了好幾句...)

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

相關(guān)文章

  • 解決vue項(xiàng)目運(yùn)行出現(xiàn)warnings?potentially?fixable?with?the?`--fix`?option的報(bào)錯(cuò)問(wèn)題

    解決vue項(xiàng)目運(yùn)行出現(xiàn)warnings?potentially?fixable?with?the?`--fix

    這篇文章主要介紹了解決vue項(xiàng)目運(yùn)行出現(xiàn)warnings?potentially?fixable?with?the?`--fix`?option的報(bào)錯(cuò)問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-11-11
  • 快速處理vue渲染前的顯示問(wèn)題

    快速處理vue渲染前的顯示問(wèn)題

    下面小編就為大家分享一篇快速處理vue渲染前的顯示問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 如何通過(guò)Vue3+Element?Plus自定義彈出框組件

    如何通過(guò)Vue3+Element?Plus自定義彈出框組件

    這篇文章主要給大家介紹了關(guān)于如何通過(guò)Vue3+Element?Plus自定義彈出框組件的相關(guān)資料,彈窗是前端開(kāi)發(fā)中的一種常見(jiàn)需求,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-05-05
  • Vue 路由返回恢復(fù)頁(yè)面狀態(tài)的操作方法

    Vue 路由返回恢復(fù)頁(yè)面狀態(tài)的操作方法

    在使用 Vue 開(kāi)發(fā)前端的時(shí)候遇到一個(gè)場(chǎng)景在首頁(yè)進(jìn)行一些數(shù)據(jù)搜索,點(diǎn)擊搜索結(jié)果進(jìn)入詳情頁(yè)面,瀏覽詳情頁(yè)后返回主頁(yè),所以需要在返回后恢復(fù)跳轉(zhuǎn)前的頁(yè)面參數(shù)狀態(tài),今天通過(guò)本文給大家分享Vue 路由頁(yè)面狀態(tài)返回的操作方法,一起看看吧
    2021-07-07
  • 詳解vee-validate的使用個(gè)人小結(jié)

    詳解vee-validate的使用個(gè)人小結(jié)

    本篇文章主要介紹了詳解vee-validate的使用個(gè)人小結(jié),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-06-06
  • Vue.js 中 ref 和 reactive 的區(qū)別及用法解析

    Vue.js 中 ref 和 reactive 的區(qū)別及用法解析

    在Vue.js中,ref主要用于創(chuàng)建響應(yīng)式的引用,通過(guò).value屬性來(lái)訪問(wèn)和修改值,特別適用于需要頻繁更改整個(gè)值的場(chǎng)景,而reactive則用于創(chuàng)建深度響應(yīng)的對(duì)象或數(shù)組,本文給大家介紹Vue.js 中 ref 和 reactive 的區(qū)別及用法,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Vue瀏覽器鏈接與接口參數(shù)實(shí)現(xiàn)加密過(guò)程詳解

    Vue瀏覽器鏈接與接口參數(shù)實(shí)現(xiàn)加密過(guò)程詳解

    這篇文章主要介紹了Vue瀏覽器鏈接與接口參數(shù)實(shí)現(xiàn)加密過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-12-12
  • vue中組件<router-view>使用方法詳解

    vue中組件<router-view>使用方法詳解

    這篇文章主要給大家介紹了關(guān)于vue中組件<router-view>使用方法的相關(guān)資料,Vue 路由中的 <router-view/> 是用來(lái)承載當(dāng)前級(jí)別下的子級(jí)路由的一個(gè)視圖標(biāo)簽,此標(biāo)簽的作用就是顯示當(dāng)前路由級(jí)別下一級(jí)的頁(yè)面,需要的朋友可以參考下
    2024-06-06
  • Vue3 使用Vuex和router的注意事項(xiàng)及操作方法

    Vue3 使用Vuex和router的注意事項(xiàng)及操作方法

    在vue2中 使用的?this.$route?和?this.$router?this.$store的使用在vue3中完全適用,這篇文章主要介紹了Vue3 使用Vuex和router的注意事項(xiàng)及操作方法,需要的朋友可以參考下
    2022-12-12
  • 討論vue中混入mixin的應(yīng)用

    討論vue中混入mixin的應(yīng)用

    這篇文章主要介紹了vue中混入mixin的理解和應(yīng)用,對(duì)vue感興趣的同學(xué),可以參考下
    2021-05-05

最新評(píng)論

云浮市| 清水河县| 北碚区| 林周县| 侯马市| 桦南县| 古蔺县| 化州市| 凤山市| 同心县| 神池县| 廊坊市| 临海市| 罗城| 墨竹工卡县| 荃湾区| 东辽县| 定襄县| 大关县| 桐柏县| 邵东县| 彭水| 鹿邑县| 黄梅县| 古田县| 湘西| 平南县| 广东省| 屯门区| 大洼县| 汶川县| 民乐县| 武邑县| 洪泽县| 莆田市| 华阴市| 阿勒泰市| 辽中县| 长乐市| 邵阳市| 昭觉县|