国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端架構(gòu): 腳手架框架之yargs高級(jí)應(yīng)用教程

這篇具有很好參考價(jià)值的文章主要介紹了前端架構(gòu): 腳手架框架之yargs高級(jí)應(yīng)用教程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

腳手架框架之yargs高級(jí)應(yīng)用


1 )高級(jí)應(yīng)用概述

  • 現(xiàn)在還用 xyzcli 這個(gè)腳手架,繼續(xù)在這個(gè)項(xiàng)目中來(lái)看yargs的高級(jí)用法
  • 在 yargs 文檔中, 給出了復(fù)雜應(yīng)用的方式,這里做下詳解
    • https://www.npmjs.com/package/yargs?activeTab=readme#complex-example
  • 這里主要關(guān)注 ↓
    • command
    • recommendCommands
    • fail

2 )command 應(yīng)用案例

2.1 官方示例

  • 復(fù)雜應(yīng)用案例,自定義 command
    #!/usr/bin/env node
    const yargs = require('yargs/yargs')
    const { hideBin } = require('yargs/helpers')
    
    yargs(hideBin(process.argv))
      // 注意 command的 四個(gè)參數(shù)
      .command('serve [port]', 'start the server', (yargs) => {
        return yargs
          .positional('port', {
            describe: 'port to bind on',
            default: 5000
          })
      }, (argv) => {
        if (argv.verbose) console.info(`start server on :${argv.port}`)
        serve(argv.port)
      })
      .option('verbose', {
        alias: 'v',
        type: 'boolean',
        description: 'Run with verbose logging'
      })
      .parse()
    
    • 這里 command 的四個(gè)參數(shù)分別是
      • 1 )command + options, 這里 serve [port]
        • 這里的serve是自定義的命令,如: $ xyzcli serve
        • 這里的 [port] 是 option,如: $ xyzcli serve --port
      • 2 )描述,這里是 start the server
        • 用于對(duì)前面命令和配置的補(bǔ)充描述
      • 3 )builder函數(shù),這里是一個(gè)回調(diào)
        • builder是指在運(yùn)行command之前做的一些事情
        • 這里會(huì)傳入 yargs 對(duì)象
        • 比如在這里可以定義在這個(gè) serve 命令中用到的 option
        • 這里定義了一個(gè)port參數(shù),并給它一個(gè)5000的默認(rèn)值
      • 4 )handler函數(shù),用于具體執(zhí)行 command 的行為
        • 比如這個(gè) serve 命令啟動(dòng)了一個(gè)http的服務(wù)
        • 這個(gè)http服務(wù)就在這個(gè) handler 函數(shù)中定義

2.2 在xyzcli中配置, 這里接上文走一個(gè)全量的代碼

#!/usr/bin/env node

const yargs = require('yargs/yargs');
const { hideBin } = require('yargs/helpers');
const dedent = require('dedent');

const arg = hideBin(process.argv);
const cli = yargs(arg)

cli
	.usage('Usage: xyzcli [command] <options>')
	.demandCommand(1, 'A command is required. Pass --help to see all available commands and options.')
	.strict()
	.alias('h', 'help')
	.alias('v', 'version')
	// .alias('d', 'debug')
	.wrap(cli.terminalWidth())
	.epilogue(dedent`
		Welcome to use xyzcli command line.
		We hope you guys work happily every day!

		For more information, please visit: https://xxx.com/xxx/xyzcli
	`)
	.options({
		debug: {
			type: 'boolean',
			describe: 'Bootstrap debug mode',
			alias: 'd' // 這里添加了,上面就可以忽略了,推薦寫在這里
		}
	})
	.option('registry', {
		type: 'string',
		describe: 'Define global registry',
		alias: 'r',
		// hidden: true, // 這個(gè)就不會(huì)出現(xiàn)在提示中,但是可以作為開(kāi)發(fā)調(diào)試使用 --ci
	})
	.group(['debug'], '開(kāi)發(fā)選項(xiàng):')
	.group(['registry'], '其他選項(xiàng):')
	.command('init [name]', 'Init your project', (yargs) => {
		yargs
			.option('name', {
				type: 'string',
				describe: 'Name of a project',
        alias: 'n',
			})
	}, (argv) => {
		console.log(argv);
	})
	.argv;
  • 執(zhí)行 $ xyzcli init,查看輸出
    { _: [ 'init' ], '$0': 'xyzcli' }
    
  • 執(zhí)行 $ xyzcli init --name xx,查看輸出
    { _: [ 'init' ], name: 'xx', '$0': 'xyzcli' }
    
  • 執(zhí)行 $ xyzcli init -h,查看輸出
    xyzcli init [name]
    
    Init your project
    
    開(kāi)發(fā)選項(xiàng):
      -d, --debug  Bootstrap debug mode                                                              [布爾]
    
    其他選項(xiàng):
      -r, --registry  Define global registry                                                       [字符串]
    
    選項(xiàng):
      -n, --name     Name of a project                                                             [字符串]
      -h, --help     顯示幫助信息                                                                    [布爾]
      -v, --version  顯示版本號(hào)                                                                      [布爾]
    
    • 可見(jiàn)最上面出現(xiàn)一則幫助提示
      xyzcli init [name]
      
      Init your project
      
  • 執(zhí)行 xyzcli init -d -r npm -n x-project, 查看輸出
    {
      _: [ 'init' ], // _ 里面就是注冊(cè)的 command 命令
      // d 和 debug 存在這兩個(gè)option, 則為true
      d: true,
      debug: true,
      // r 和 registry 也同樣
      r: 'npm',
      registry: 'npm',
      // n 是 name,項(xiàng)目名稱為 x-project
      n: 'x-project',
      name: 'x-project',
      // $0 就是腳手架命令
      '$0': 'xyzcli'
    }
    
    • 注意,這種定義下,注意 alias 別名不能重復(fù)
    • 如果重復(fù),覆蓋了,就會(huì)出問(wèn)題

2.3 參考 lerna 工程示例

  • 參考:https://github.com/lerna/lerna/blob/main/packages/lerna/src/index.ts
    // Bundled
    import { lernaCLI } from "@lerna/core";
    import changedCmd from "@lerna/commands/changed/command";
    import cleanCmd from "@lerna/commands/clean/command";
    import diffCmd from "@lerna/commands/diff/command";
    import execCmd from "@lerna/commands/exec/command";
    import importCmd from "@lerna/commands/import/command";
    import infoCmd from "@lerna/commands/info/command";
    import initCmd from "@lerna/commands/init/command";
    import listCmd from "@lerna/commands/list/command";
    import publishCmd from "@lerna/commands/publish/command";
    import runCmd from "@lerna/commands/run/command";
    import versionCmd from "@lerna/commands/version/command";
    
    import addCachingCmd from "./commands/add-caching/command";
    import repairCmd from "./commands/repair/command";
    import watchCmd from "./commands/watch/command";
    
    // Evaluated at runtime to grab the current lerna version
    const pkg = require("../package.json");
    
    module.exports = function main(argv: NodeJS.Process["argv"]) {
      const context = {
        lernaVersion: pkg.version,
      };
    
      const cli = lernaCLI()
        .command(addCachingCmd)
        .command(changedCmd)
        .command(cleanCmd)
        .command(createCmd)
        .command(diffCmd)
        .command(execCmd)
        .command(importCmd)
        .command(infoCmd)
        .command(initCmd)
        .command(listCmd)
        .command(publishCmd)
        .command(repairCmd)
        .command(runCmd)
        .command(watchCmd)
        .command(versionCmd);
    
      applyLegacyPackageManagementCommands(cli);
    
      return cli.parse(argv, context);
    };
    
  • 按照上述這種用法,找其中一條 .command(listCmd)
  • 定位到 import listCmd from "@lerna/commands/list/command";
    • https://github.com/lerna/lerna/blob/main/packages/lerna/src/commands/list/command.ts 發(fā)現(xiàn)內(nèi)容很少
  • 再次查看全局配置: https://github.com/lerna/lerna/blob/main/tsconfig.base.json
    "@lerna/commands/list": ["libs/commands/list/src/index.ts"],
    
  • 定位到這里 https://github.com/lerna/lerna/blob/main/libs/commands/list/src/command.ts
    import { filterOptions, listableOptions } from "@lerna/core";
    import type { CommandModule } from "yargs";
    
    /**
     * @see https://github.com/yargs/yargs/blob/master/docs/advanced.md#providing-a-command-module
     */
    const command: CommandModule = {
      command: "list",
      aliases: ["ls", "la", "ll"],
      describe: "List local packages",
      builder(yargs) {
        listableOptions(yargs);
        return filterOptions(yargs);
      },
      async handler(argv) {
        return (await import(".")).factory(argv);
      },
    };
    
    export = command;
    
    • 可見(jiàn)這個(gè) command 是一個(gè)對(duì)象,對(duì)象里有4項(xiàng)參數(shù)
  • 以上這個(gè),是 Lerna 對(duì)yargs的內(nèi)部應(yīng)用,同樣,在自己的腳手架中試驗(yàn)一下
    const cli = yargs(arg)
    
    cli
      .usage('Usage: xyzcli [command] <options>')
      .demandCommand(1, 'A command is required. Pass --help to see all available commands and options.')
      .strict()
      .alias('h', 'help')
      .alias('v', 'version')
      // .alias('d', 'debug')
      .wrap(cli.terminalWidth())
      .epilogue(dedent`
        Welcome to use xyzcli command line.
        We hope you guys work happily every day!
    
        For more information, please visit: https://xxx.com/xxx/xyzcli
      `)
      .options({
        debug: {
          type: 'boolean',
          describe: 'Bootstrap debug mode',
          alias: 'd' // 這里添加了,上面就可以忽略了,推薦寫在這里
        }
      })
      .option('registry', {
        type: 'string',
        describe: 'Define global registry',
        alias: 'r',
        // hidden: true, // 這個(gè)就不會(huì)出現(xiàn)在提示中,但是可以作為開(kāi)發(fā)調(diào)試使用 --ci
      })
      .group(['debug'], '開(kāi)發(fā)選項(xiàng):')
      .group(['registry'], '其他選項(xiàng):')
      .command('init [name]', 'Init your project', (yargs) => {
        yargs
          .option('name', {
            type: 'string',
            describe: 'Name of a project',
            alias: 'n',
          })
      }, (argv) => {
        console.log(argv);
      })
      // 注意,這里
      .command({
        command: 'list',
        aliases: ['ls', 'la', 'll'],
        describe: 'List local package',
        builder: (yargs) => {},
        handler: (argv) => { console.log(argv); }
      })
      .argv;
    
  • 執(zhí)行 $ xyzcli list, 查看輸出
    { _: [ 'list' ], '$0': 'xyzcli' }
    
  • 執(zhí)行 $ xyzcli ls, 查看輸出
    { _: [ 'ls' ], '$0': 'xyzcli' }
    
  • 執(zhí)行 $ xyzcli ll, 查看輸出
    { _: [ 'll' ], '$0': 'xyzcli' }
    
  • 執(zhí)行 $ xyzcli la, 查看輸出
    { _: [ 'la' ], '$0': 'xyzcli' }
    
  • 以上就是 command 的兩種用法

3 )recommendCommands 應(yīng)用案例

const cli = yargs(arg)

cli
	.usage('Usage: xyzcli [command] <options>')
	.demandCommand(1, 'A command is required. Pass --help to see all available commands and options.')
	.strict()
	.recommendCommands() // 注意這里
	.alias('h', 'help')
	.alias('v', 'version')
	// .alias('d', 'debug')
	.wrap(cli.terminalWidth())
	.epilogue(dedent`
		Welcome to use xyzcli command line.
		We hope you guys work happily every day!

		For more information, please visit: https://xxx.com/xxx/xyzcli
	`)
	.options({
		debug: {
			type: 'boolean',
			describe: 'Bootstrap debug mode',
			alias: 'd' // 這里添加了,上面就可以忽略了,推薦寫在這里
		}
	})
	.option('registry', {
		type: 'string',
		describe: 'Define global registry',
		alias: 'r',
		// hidden: true, // 這個(gè)就不會(huì)出現(xiàn)在提示中,但是可以作為開(kāi)發(fā)調(diào)試使用 --ci
	})
	.group(['debug'], '開(kāi)發(fā)選項(xiàng):')
	.group(['registry'], '其他選項(xiàng):')
	.command('init [name]', 'Init your project', (yargs) => {
		yargs
			.option('name', {
				type: 'string',
				describe: 'Name of a project',
				alias: 'n',
			})
	}, (argv) => {
		console.log(argv);
	})
	.command({
		command: 'list',
		aliases: ['ls', 'la', 'll'],
		describe: 'List local package',
		builder: (yargs) => {},
		handler: (argv) => { console.log(argv); }
	})
	.argv;
  • 上面加上 .recommendCommands() 之后, 嘗試執(zhí)行 $ xyzcli l, 查看輸出
    Usage: xyzcli [command] <options>
    
    命令:
      xyzcli init [name]  Init your project
      xyzcli list         List local package                                             [aliases: ls, la, ll]
    
    開(kāi)發(fā)選項(xiàng):
      -d, --debug  Bootstrap debug mode                                                                 [布爾]
    
    其他選項(xiàng):
      -r, --registry  Define global registry                                                          [字符串]
    
    選項(xiàng):
      -h, --help     顯示幫助信息                                                                       [布爾]
      -v, --version  顯示版本號(hào)                                                                         [布爾]
    
    Welcome to use xyzcli command line.
    We hope you guys work happily every day!
    
    For more information, please visit: https://xxx.com/xxx/xyzcli
    
    是指 ls?
    
    • 看這最后,是指 ls?, 這個(gè)命令就是當(dāng)你輸入不全時(shí),嘗試對(duì)你進(jìn)行提醒

4 )fail 應(yīng)用案例


cli
	.usage('Usage: xyzcli [command] <options>')
	.demandCommand(1, 'A command is required. Pass --help to see all available commands and options.')
	.strict()
	.recommendCommands()
  // 注意這里
	.fail((msg, err) => {
		console.log('msg: ', msg)
		console.log('err: ', err)
	})
	.alias('h', 'help')
	.alias('v', 'version')
	// .alias('d', 'debug')
	.wrap(cli.terminalWidth())
	.epilogue(dedent`
		Welcome to use xyzcli command line.
		We hope you guys work happily every day!

		For more information, please visit: https://xxx.com/xxx/xyzcli
	`)
	.options({
		debug: {
			type: 'boolean',
			describe: 'Bootstrap debug mode',
			alias: 'd' // 這里添加了,上面就可以忽略了,推薦寫在這里
		}
	})
	.option('registry', {
		type: 'string',
		describe: 'Define global registry',
		alias: 'r',
		// hidden: true, // 這個(gè)就不會(huì)出現(xiàn)在提示中,但是可以作為開(kāi)發(fā)調(diào)試使用 --ci
	})
	.group(['debug'], '開(kāi)發(fā)選項(xiàng):')
	.group(['registry'], '其他選項(xiàng):')
	.command('init [name]', 'Init your project', (yargs) => {
		yargs
			.option('name', {
				type: 'string',
				describe: 'Name of a project',
				alias: 'n',
			})
	}, (argv) => {
		console.log(argv);
	})
	.command({
		command: 'list',
		aliases: ['ls', 'la', 'll'],
		describe: 'List local package',
		builder: (yargs) => {},
		handler: (argv) => { console.log(argv); }
	})
	.argv;
  • 嘗試執(zhí)行 $ xyzcli lxx 故意給一個(gè)沒(méi)有的命令,查看輸出結(jié)果

    msg:  是指 ls?
    err:  undefined
    msg:  無(wú)法識(shí)別的選項(xiàng):lxx
    err:  undefined
    
    • 這里輸出了 2個(gè) msg, 兩個(gè) err, 這里 err 都是 undefined
    • 在實(shí)際應(yīng)用中,參考 lerna, 如下
  • 參考 lerna 中的應(yīng)用 https://github.com/lerna/lerna/blob/main/libs/core/src/lib/cli.ts#L18文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-828161.html

    .fail((msg, err: any) => {
      // certain yargs validations throw strings :P
      const actual = err || new Error(msg);
    
      // ValidationErrors are already logged, as are package errors
      if (actual.name !== "ValidationError" && !actual.pkg) {
        // the recommendCommands() message is too terse
        if (/Did you mean/.test(actual.message)) {
          // TODO: refactor to address type issues
          // eslint-disable-next-line @typescript-eslint/ban-ts-comment
          // @ts-ignore
          log.error("lerna", `Unknown command "${cli.parsed.argv._[0]}"`);
        }
    
        log.error("lerna", actual.message);
      }
    
      // exit non-zero so the CLI can be usefully chained
      cli.exit(actual.exitCode > 0 ? actual.exitCode : 1, actual);
    })
    

到了這里,關(guān)于前端架構(gòu): 腳手架框架之yargs高級(jí)應(yīng)用教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端架構(gòu): 實(shí)現(xiàn)腳手架終端UI樣式之ANSI escape code, Chalk, Ora介紹

    前端架構(gòu): 實(shí)現(xiàn)腳手架終端UI樣式之ANSI escape code, Chalk, Ora介紹

    在腳手架當(dāng)中實(shí)現(xiàn)命令行的UI顯示 1 )概述 在命令行中,如果想實(shí)現(xiàn)除傳統(tǒng)的常規(guī)文本以外的內(nèi)容 比如想對(duì)字體進(jìn)行加粗斜體下劃線,包括對(duì)它改變顏色改變前景色改變后景色等等 需要借助一個(gè)叫做 ANSI escape code 這樣的一個(gè)概念 它其實(shí)是一個(gè)標(biāo)準(zhǔn),它可以用來(lái)控制光標(biāo)的位

    2024年02月22日
    瀏覽(29)
  • 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的前端腳手架

    實(shí)現(xiàn)一個(gè)簡(jiǎn)單的前端腳手架

    前端腳手架概念 實(shí)現(xiàn)前端腳手架 隨著前端工程化的概念越來(lái)越深入人心,腳手架應(yīng)運(yùn)而生。簡(jiǎn)單來(lái)說(shuō),「前端腳手架」就是指通過(guò)選擇幾個(gè)選項(xiàng)快速搭建項(xiàng)目基礎(chǔ)代碼的工具 前端腳手架可幫我們做什么? 可以幫助我們快速生成項(xiàng)目的基礎(chǔ)代碼 腳手架工具的項(xiàng)目模板經(jīng)過(guò)了

    2024年02月03日
    瀏覽(29)
  • 和chatgpt學(xué)架構(gòu)01-搭建項(xiàng)目腳手架

    今年3月份以來(lái),chatgpt就熱度不減。有了這種聊天機(jī)器人,就可以很方便的幫助我們提高。無(wú)論是我們獨(dú)立創(chuàng)業(yè)還是做項(xiàng)目外包,擁有一套自己可以把握的腳手架還是必備的能力。 過(guò)去如果靠自己摸索,組裝這么一套腳手架還是費(fèi)事費(fèi)力的。一個(gè)是涉及技術(shù)比較多,既要架構(gòu)

    2024年02月16日
    瀏覽(25)
  • 前端如何搭建腳手架并在本地運(yùn)行

    前端如何搭建腳手架并在本地運(yùn)行

    在開(kāi)始搭建前,確保本機(jī)安裝了node,為避免奇奇怪怪的問(wèn)題 建議node版本16以上 使用過(guò)vue ,react,angular的同學(xué)都知道 ,應(yīng)該對(duì)腳手架有一定的理解,比如vue-cli的 vue create myApp ,其中vue 就是vue-cli聲明的一個(gè)命令,下來(lái)我們創(chuàng)建一個(gè)項(xiàng)目并聲明自己的命令。 創(chuàng)建一個(gè)空的文件夾

    2024年02月20日
    瀏覽(29)
  • Vue的架構(gòu)以及基于腳手架環(huán)境開(kāi)發(fā)vue項(xiàng)目

    Vue的架構(gòu)以及基于腳手架環(huán)境開(kāi)發(fā)vue項(xiàng)目

    M:model 模型層(業(yè)務(wù)邏輯層),主要包含 JS 代碼,用于管理業(yè)務(wù)邏輯的實(shí)現(xiàn)。 V:View 視圖層,主要包括 HTML / CSS代碼,用于管理 UI 的展示。 VM:viewModel (視圖模型層),用于將data與視圖層的 DOM 進(jìn)行動(dòng)態(tài)綁定。 基于腳手架環(huán)境開(kāi)發(fā)Vue項(xiàng)目 制作web 從小作坊狀態(tài)轉(zhuǎn)向工程化開(kāi)

    2024年02月01日
    瀏覽(24)
  • React應(yīng)用(基于React腳手架)

    React應(yīng)用(基于React腳手架)

    react 是前端三大框架中之一,而且大公司基本都在用react 包括百度也在使用 他有自己的獨(dú)特的虛擬dom build-react-cli是幫助你快速創(chuàng)建生成react項(xiàng)目的腳手架工具,配置了多種可選擇的不同類型項(xiàng)目模版。 xxx腳手架: 用來(lái)幫助程序員快速創(chuàng)建一個(gè)基于xxx庫(kù)的模板項(xiàng)目 包含了所有需

    2023年04月21日
    瀏覽(17)
  • 【前端】Vue2 腳手架模塊化開(kāi)發(fā) -快速入門

    【前端】Vue2 腳手架模塊化開(kāi)發(fā) -快速入門

    ??歡迎來(lái)到@邊境矢夢(mèng)°的csdn博文?? ???本文主要梳理Vue2 腳手架模塊化開(kāi)發(fā) ?? ??我是邊境矢夢(mèng)°,一個(gè)正在為秋招和算法競(jìng)賽做準(zhǔn)備的學(xué)生?? ??喜歡的朋友可以關(guān)注一下 ?????? ,下次更新不迷路?? Ps: 月亮越亮說(shuō)明知識(shí)點(diǎn)越重要 (重要性或者難度越大)??????????

    2024年02月10日
    瀏覽(97)
  • 小程序框架Mpx的下一代腳手架升級(jí)之路|滴滴開(kāi)源

    小程序框架Mpx的下一代腳手架升級(jí)之路|滴滴開(kāi)源

    導(dǎo)讀 Mpx開(kāi)源之路已經(jīng)走過(guò)五個(gè)年頭, 目前支持了滴滴內(nèi)部全量的小程序業(yè)務(wù)開(kāi)發(fā),是滴滴開(kāi)源委員會(huì)孵化的精品項(xiàng)目。 2022年至今,我們對(duì) Mpx 框架進(jìn)行了多項(xiàng)重要功能升級(jí),包括組合式API開(kāi)發(fā)規(guī)范、分包異步構(gòu)建支持、單元測(cè)試能力建設(shè)和今天要重點(diǎn)介紹的@mpxjs/cli腳手架升

    2024年02月13日
    瀏覽(21)
  • 新鮮出爐的 MVVM 腳手架 —— KtArmor-MVVM,面試安卓系統(tǒng)架構(gòu)

    新鮮出爐的 MVVM 腳手架 —— KtArmor-MVVM,面試安卓系統(tǒng)架構(gòu)

    } 通過(guò) @BindViewModel 注解viewModel 變量,KtArmor-MVVM 通過(guò) 反射 ,自動(dòng)創(chuàng)建 LoginViewModel 實(shí)例, 并賦值給 viewModel 變量。直接使用即可! @BaseUrl(API.BASE_URL) // 看這里!! interface ApiService { @POST(API.LOGIN) suspend fun login(@Query(“username”) username: String, @Query(“password”) password: String): BaseRe

    2024年04月10日
    瀏覽(32)
  • 使用vue腳手架搭建前端工程(附:搭配ElementUI來(lái)快速開(kāi)發(fā))

    使用vue腳手架搭建前端工程(附:搭配ElementUI來(lái)快速開(kāi)發(fā))

    目錄 一、搭建過(guò)程 1. 全局安裝webpack(打包工具) 2. 全局安裝vue腳手架 3. 初始化vue項(xiàng)目 4. vue項(xiàng)目目錄的簡(jiǎn)單介紹 二、執(zhí)行流程分析 三、自己造一個(gè)組件案例 四、ElementUI的使用 1. 環(huán)境的引入 2. 一個(gè)簡(jiǎn)單使用 3. 使用它來(lái)快速搭建后臺(tái)管理系統(tǒng) 五、總結(jié) npm install webpack -g np

    2024年02月10日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包