亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

通過npm或yarn自動生成vue組件的方法示例

2019-11-19 12:09:32
字體:
來源:轉載
供稿:網友

不知道大家每次新建組件的時候,是不是都要創建一個目錄,然后新增一個.vue文件,然后寫template、script、style這些東西,如果是公共組件,是不是還要新建一個index.js用來導出vue組件、雖然有vscode有代碼片段能實現自動補全,但還是很麻煩,今天靈活運用scripts工作流,自動生成vue文件和目錄。

實踐步驟

安裝一下chalk,這個插件能讓我們的控制臺輸出語句有各種顏色區分

npm install chalk --save-dev yarn add chalk --save-dev

在根目錄中創建一個 scripts 文件夾

新增一個generateComponent.js文件,放置生成組件的代碼

新增一個template.js文件,放置組件模板的代碼

template.js文件,里面的內容可以自己自定義,符合當前項目的模板即可

// template.jsmodule.exports = { vueTemplate: compoenntName => {  return `<template> <div class="${compoenntName}">  ${compoenntName}組件 </div></template><script>export default { name: '${compoenntName}'}</script><style scoped lang="stylus" rel="stylesheet/stylus">.${compoenntName} {}</style>` }, entryTemplate: `import Main from './main.vue'export default Main`}

generateComponent.js生成vue目錄和文件的代碼

// generateComponent.js`const chalk = require('chalk') // 控制臺打印彩色const path = require('path')const fs = require('fs')const resolve = (...file) => path.resolve(__dirname, ...file)const log = message => console.log(chalk.green(`${message}`))const successLog = message => console.log(chalk.blue(`${message}`))const errorLog = error => console.log(chalk.red(`${error}`))const { vueTemplate, entryTemplate } = require('./template')const _ = process.argv.splice(2)[0] === '-com'const generateFile = (path, data) => { if (fs.existsSync(path)) {  errorLog(`${path}文件已存在`)  return } return new Promise((resolve, reject) => {  fs.writeFile(path, data, 'utf8', err => {   if (err) {    errorLog(err.message)    reject(err)   } else {    resolve(true)   }  }) })}// 公共組件目錄src/base,全局注冊組件目錄src/base/global,頁面組件目錄src/components_ ? log('請輸入要生成的組件名稱、如需生成全局組件,請加 global/ 前綴') : log('請輸入要生成的頁面組件名稱、會生成在 components/目錄下')let componentName = ''process.stdin.on('data', async chunk => { const inputName = String(chunk).trim().toString() // 根據不同類型組件分別處理 if (_) {  // 組件目錄路徑  const componentDirectory = resolve('../src/base', inputName)  // vue組件路徑  const componentVueName = resolve(componentDirectory, 'main.vue')  // 入口文件路徑  const entryComponentName = resolve(componentDirectory, 'index.js')  const hasComponentDirectory = fs.existsSync(componentDirectory)  if (hasComponentDirectory) {   errorLog(`${inputName}組件目錄已存在,請重新輸入`)   return  } else {   log(`正在生成 component 目錄 ${componentDirectory}`)   await dotExistDirectoryCreate(componentDirectory)  }  try {   if (inputName.includes('/')) {    const inputArr = inputName.split('/')    componentName = inputArr[inputArr.length - 1]   } else {    componentName = inputName   }   log(`正在生成 vue 文件 ${componentVueName}`)   await generateFile(componentVueName, vueTemplate(componentName))   log(`正在生成 entry 文件 ${entryComponentName}`)   await generateFile(entryComponentName, entryTemplate)   successLog('生成成功')  } catch (e) {   errorLog(e.message)  } } else {  const inputArr = inputName.split('/')  const directory = inputArr[0]  let componentName = inputArr[inputArr.length - 1]  // 頁面組件目錄  const componentDirectory = resolve('../src/components', directory)  // vue組件  const componentVueName = resolve(componentDirectory, `${componentName}.vue`)  const hasComponentDirectory = fs.existsSync(componentDirectory)  if (hasComponentDirectory) {   log(`${componentDirectory}組件目錄已存在,直接生成vue文件`)  } else {   log(`正在生成 component 目錄 ${componentDirectory}`)   await dotExistDirectoryCreate(componentDirectory)  }  try {   log(`正在生成 vue 文件 ${componentName}`)   await generateFile(componentVueName, vueTemplate(componentName))   successLog('生成成功')  } catch (e) {   errorLog(e.message)  } } process.stdin.emit('end')})process.stdin.on('end', () => { log('exit') process.exit()})function dotExistDirectoryCreate (directory) { return new Promise((resolve) => {  mkdirs(directory, function () {   resolve(true)  }) })}// 遞歸創建目錄function mkdirs (directory, callback) { var exists = fs.existsSync(directory) if (exists) {  callback() } else {  mkdirs(path.dirname(directory), function () {   fs.mkdirSync(directory)   callback()  }) }}

配置package.json,scripts新增兩行命令,其中-com是為了區別是創建頁面組件還是公共組件

"scripts": {  "new:view":"node scripts/generateComponent",  "new:com": "node scripts/generateComponent -com" },

執行

  npm run new:view // 生成頁組件  npm run new:com // 生成基礎組件  或者  yarn run new:view // 生成頁組件  yarn run new:com // 生成基礎組件


以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av免费在线| 国语自产偷拍精品视频偷| 欧美日韩国产色视频| 日韩欧美第一页| 第一福利永久视频精品| 日韩va亚洲va欧洲va国产| 欧美—级a级欧美特级ar全黄| 国产有码一区二区| 69视频在线播放| 国产日韩中文字幕在线| 91精品久久久久久久久不口人| 91精品中文在线| 国产成人综合精品在线| 欧美日韩成人在线播放| 成人黄色在线免费| 国产精选久久久久久| 国产日韩精品在线| 久久中文字幕在线视频| 欧美最近摘花xxxx摘花| 欧美裸身视频免费观看| 91精品国产网站| 精品亚洲精品福利线在观看| 最近的2019中文字幕免费一页| 色婷婷综合久久久久| 欧美激情久久久| 亚洲福利在线视频| 欧美精品在线播放| 日韩成人av一区| 中文字幕国内精品| 欧美在线视频在线播放完整版免费观看| 久久99久久亚洲国产| 日韩av毛片网| 亚洲日韩中文字幕在线播放| 欧美成年人视频网站| 欧美激情中文网| 亚洲精品一区中文| 久久精品在线播放| 日本欧美一级片| 日韩欧美极品在线观看| 隔壁老王国产在线精品| 日本一欧美一欧美一亚洲视频| 成人国产精品免费视频| 欧美一级视频在线观看| 精品亚洲一区二区三区在线播放| 亚洲xxx自由成熟| 亚洲精品黄网在线观看| 4438全国成人免费| 一区二区三区无码高清视频| 久久亚洲春色中文字幕| 日韩精品免费电影| 亚洲精品动漫久久久久| 日韩av中文字幕在线免费观看| 91精品国产91久久| 精品久久久久久久久久久久久| 欧美国产激情18| 亚洲色图日韩av| 亚洲美女av电影| 亚洲色图综合网| 欧美色另类天堂2015| 久久综合久久88| 亚洲日韩第一页| 98精品国产自产在线观看| 欧美一级黑人aaaaaaa做受| 成人免费视频在线观看超级碰| 久久久av电影| 欧美大片在线免费观看| 成人www视频在线观看| 国产欧美va欧美va香蕉在线| 久久久久久久香蕉网| 成人乱色短篇合集| 国产精品免费久久久| 久久国产精品久久久久| 91精品成人久久| 大荫蒂欧美视频另类xxxx| 91久久久久久久一区二区| 亚洲日本中文字幕免费在线不卡| 国产视频精品免费播放| 中日韩午夜理伦电影免费| 亚洲人成电影网站色| 9.1国产丝袜在线观看| 日韩免费观看高清| 国产精品无av码在线观看| 国产午夜精品一区理论片飘花| 国产精品观看在线亚洲人成网| 久久夜精品香蕉| 欧美激情视频网| 日韩精品在线观看一区二区| 91精品国产高清| 亚洲天堂视频在线观看| 国产亚洲综合久久| 亚洲国产成人久久综合一区| 51精品在线观看| 亚洲一区中文字幕| 国产女人18毛片水18精品| 国产美女扒开尿口久久久| 精品成人久久av| 亚洲国产美女久久久久| 日韩在线精品一区| 欧美电影在线观看高清| 欧美电影免费观看网站| 亚洲午夜av久久乱码| 麻豆一区二区在线观看| 久久精品视频在线观看| 亚洲欧美在线免费| 亚洲成色777777在线观看影院| 91牛牛免费视频| 亚洲精品日韩丝袜精品| 欧美中在线观看| 日韩免费电影在线观看| 国产精品三级美女白浆呻吟| 亚洲自拍偷拍一区| 日韩av资源在线播放| 日韩欧美精品网址| 欧美国产欧美亚洲国产日韩mv天天看完整| 中文字幕国产日韩| 亚洲精品一区二区网址| 欧美午夜女人视频在线| 国产欧美精品va在线观看| 日韩视频免费大全中文字幕| 欧美日韩在线观看视频| 精品中文字幕在线| 欧美性猛交xxxx乱大交3| 一个色综合导航| 欧美在线视频免费| 亚洲一区二区三区在线视频| 夜夜狂射影院欧美极品| 国产精品久久久久久五月尺| 51色欧美片视频在线观看| 亚洲日韩第一页| 精品日韩视频在线观看| 欧美午夜女人视频在线| 97色在线播放视频| 热久久这里只有| 欧美激情免费在线| 日韩欧美在线视频观看| 欧美成人精品在线播放| 欧美激情精品久久久| 亚洲天堂日韩电影| 成人欧美在线观看| 久久精品中文字幕| 国产精品久久久久aaaa九色| 国产精品久久久久久亚洲影视| 国产成人在线精品| 这里只有精品丝袜| www.日韩不卡电影av| 日韩av成人在线观看| 亚洲尤物视频网| 国语自产精品视频在线看| 国产精品扒开腿做爽爽爽视频| 国产精品第1页| 69影院欧美专区视频| 国产日本欧美一区| 精品久久久久久久中文字幕| 国产在线98福利播放视频| 亚洲免费高清视频| 欧美成人精品不卡视频在线观看| 日本伊人精品一区二区三区介绍| 欧美最猛性xxxxx(亚洲精品)| 国产亚洲精品成人av久久ww| 国产精品综合不卡av| 欧美午夜激情在线| 欧美日韩电影在线观看| 精品动漫一区二区| 91精品国产综合久久香蕉922|