脚手架架构设计和框架搭建 - 开发入门

目录

脚手架作用

创建项目

发布项目

站在前端研发的视角,分析开发脚手架的必要性

研发效能

大厂研发架构图

脚手架核心价值

和自动化构建工具区别

从使用角度理解什么是脚手架

脚手架简介

脚手架的执行原理

从应用的角度看如何开发一个脚手架

还有很多疑问需要解答

脚手架的实现原理

脚手架实现原理

脚手架原理进阶

脚手架的开发流程

脚手架开发流程详解

开发流程

使用流程

脚手架开发难点解析

快速入门第一个脚手架

脚手架本地调试方法

脚手架本地link标准流程

脚手架命令注册和参数解析

脚手架项目发布


脚手架作用

创建项目

        标准模版创建(包含鉴权代码)

        自定义规则创建

        创建组件库

        自动安装和启动

发布项目

         Git 自动化

        云构建

        项目自动发布

        组件自动发布

站在前端研发的视角,分析开发脚手架的必要性

研发效能

        开发脚手架的核心目标是:提升前端研发效能

大厂研发架构图

        创建项目 + 通用代码:埋点、HTTP请求、工具方法、组件库

        git 操作:创建仓库、代码冲突、远程代码同步、创建版本、发布打 tag

        构建 + 发布上线:依赖安装和构建、资源上传CDN、域名绑定、测试/正式服务器

脚手架核心价值

将研发过程:

        自动化:项目重复代码拷贝 / git 操作 / 发布上线操作

        标准化:项目创建 / git flow / 发布流程 / 回滚流程

        数据化:研发过程系统化、数据化,使得研发过程可量化

和自动化构建工具区别

问题:jenkins、travis等自动化构建工具已经比较成熟了,为什么还需要自研脚手架?

         不满足需求:jenkins、travis 通常在 git hooks 中触发,需要在服务端执行,无法覆盖研发人员本地的功能。如:创建项目自动化、本地 git 操作自动化等。

        定制复杂:jenkins、travis 定制过程需要开发插件,其过程较为复杂,需要使用 java 语言,对前端同学不够友好。

从使用角度理解什么是脚手架

脚手架简介

        脚手架本质是一个操作系统的客户端,它通过命令行执行,比如:

vue create vue-test-app

        上面这条命令由 3 个部分组成:

        ·主命令:vue

        ·command:create

        ·command 的 param:vue-test-app

        它表示创建一个 vue 项目,项目的名称为 vue-test-app,以上是较为简单的一个脚手架命令,但实际场景往往更加复杂,比如:

        当前目录已经有文件了,我们需要覆盖当前目录下的文件,强制进行安装 vue 项目,此时我们就可以输入:

vue create vue-test-app --force

        这里的 --force 叫做 option,用来辅助脚手架确认在特定场景下用户的选择(可以理解为配置)。还有一种场景:

        通过 vue create 创建项目时,会自动执行 npm install 帮用户安装依赖,如果我们希望使用淘宝源来安装,可以输入命令:

vue create vue-test-app --force -r https://registry.npm.taobao.org

        这里的 -r 也叫做 option,它与 --force 不同的是它使用 - ,并且使用简写,这里的 -r 也可以替换成 --registry,有的同学可能要问,为什么我知道这个命令,其实我们输入下面的命令就可以看到 vue create 支持的所有 options:

vue create --help

-r https://registry.npm.taobao.org 后面的 https://registry.npm.taobao.org 成为 option 的 param,其实 --force 可以理解为:--force true,简写为:--force 或 -f

脚手架的执行原理

        脚手架的执行原理如下:

        ·在终端输入 vue create vue-test-app

        ·终端解析出 vue 命令

        ·终端在环境变量中找到 vue 命令

        ·终端根据 vue 命令链接到实际文件 vue.js

        ·终端利用 node 执行 vue.js

        ·vue.js 解析 command / options

        ·vue.js 执行 command

        ·执行完毕,退出执行

从应用的角度看如何开发一个脚手架

        这里以 vue-cli 为例

        ·开发 npm 项目,该项目中应该包含一个 bin/vue.js 文件,并将这个项目发布到 npm

        ·将 npm 项目安装到 node 的 lib/node_modules

        ·在 node 的 bin 目录下配置 vue 软链接指向 lib/node_modules/@vue/cli/bin/vue.js

        这样我们在执行 vue 命令的时候就可以找到 vue.js 进行执行

还有很多疑问需要解答

        ·为什么全局安装 @vue/cli 后会添加的命令为 vue ?

npm install -g @vue/cli

        ·全局安装 @vue/cli 时发生了什么

        ·为什么 vue 指向一个 js 文件,我们却可以直接通过 vue 命令直接去执行它?

脚手架的实现原理

脚手架实现原理

        ·为什么全局安装 @vue/cli 后会添加的命令为 vue ?

        答:@vue/cli 的 package.json 内配置的的

{
    "bin": {
        "vue": "bin/vue.js"
    }
}

        ·全局安装 @vue/cli 时发生了什么

        答:首先 npm 把 @vue/cli 包下载到 node/版本号/lib/node_modules 下。第二解析 cli/package.json 文件,根据 "bin"属性值 在node/bin目录下创建软链接。

        ·为什么 vue 指向一个 js 文件,我们却可以直接通过 vue 命令直接去执行它?

        答:首先操作系统会在环境变量中找到 vue 命令有没有被注册,根据 "which vue"找到路径,执行这个文件。

                第二 "#!/usr/bin/env node" 这句话会告诉操作系统在环境变量中找 node 命令。

                第三 "ln -s /Users/sam/Desktop/vue-test/test.js imooc" 在 node/版本号/bin 目录下创建软链接。

脚手架原理进阶

        掌握上节内容后,我们可以继续尝试回答以下2个问题:

        ·为什么说脚手架本质是操作系统的客户端?它和我们在PC上安装的应用/软件有什么区别?

        答:node 本身是一个客户端。脚手架依赖 node 执行。和我们在 PC 上安装的应用/软件没有区别。

        ·如何为 node 脚手架命令创建别名?

        答:方式一 对文件创建软链接。方式二 嵌套软链接。

        ·描述脚手架命令执行的全过程。

脚手架的开发流程

脚手架开发流程详解

开发流程

        ·创建 npm 项目

        ·创建脚手架入口文件,最上方添加:

#!/usr/bin/env node

        ·配置 package.json,添加 bin 属性

        ·编写脚手架代码

        ·将脚手架发布到 npm

使用流程

        ·安装脚手架

npm install -g your-own-cli

        ·使用脚手架

your-own-cli

脚手架开发难点解析

        ·分包:将复杂的系统拆分成若干个模块

        ·命令注册:

vue create
vue add
vue invoke

         ·参数解析:

vue command [options] <params>

        · options 全称:--version、--help

        · options简写:-V、-h

        · 带 params 的 options:--path /Users/sam/Desktop/vue-test

        · 帮助文档:

global help
       Usage
       Options
       Commands

command help
        Usage
        Options

还有很多,比如:

        ·命令行交互

        ·日志打印

        ·命令行字体变色

        ·网络通信:HTTP/WebSocket

        ·文件处理

等等......

快速入门第一个脚手架

mkdir imooc-test

cd imooc-test

npm init -y

code .

在 imooc-test 根目录下创建 bin/index.js

index.js 首行加入 #!/usr/bin/env node

package.json 中,加入
"bin": {
    "imooc-test": "bin/index.js"
}

npm login

npm publish

        注意:在 imooc-test 目录命令行中,执行 npm install -g imooc-test,会在 node/版本号/bin 中创建本地 imooc-test 文件的软链接。npm 这样做是为了方便本地调试。想要下载远程的文件,只需要跳出 imooc-test 目录即可。 

脚手架本地调试方法

情况一:

        在 imooc-test 目录命令行中,执行 "npm link"。

        会在 node/版本号/bin 中创建软链接指向 node/版本号/lib/node_modules/ ,node/版本号/lib/node_modules/ 指向 本地 imooc-test 目录。

情况二:

         本地建一个包 imooc-test-lib,未发布到 npm 远程仓库上。

        在 imooc-test-lib 目录命令行中,执行 "npm link",可以将 imooc-test-lib 软链接到 node/版本号/lib/node_modules/ 中。

        再在 imooc-test 目录命令行中,执行 "npm link imooc-test-lib",就可以把 包 imooc-test-lib 引入 imooc-test/node_modules 中。

        在 imooc-test/package.json 中,加入 "dependencies": {"imooc-test-lib": "^1.0.0"}

脚手架本地link标准流程

链接本地脚手架:

cd your-cli-dir

npm link

链接本地库文件:

cd your-lib-dir

npm link

cd your-cli-dir

npm link your-lib

取消链接本地库文件:

cd your-lib-dir

npm unlink

cd your-cli-dir

# link存在
npm unlink your-lib

# link不存在
rm -rf node_modules

npm install -S your-lib

理解 npm link:

        ·npm link your-lib:将当前项目中 node_modules 下指定的库文件链接到 node 全局 node_modules 下的库文件

        ·npm link:将当前项目链接到 node 全局 node_modules 中作为一个库文件,并解析 bin 配置创建可执行文件

理解 npm unlink:

        ·npm unlink:将当前项目从 node 全局 node_modules 中移除

        ·npm unlink your-lib:将当前项目中的库文件依赖移除

脚手架命令注册和参数解析

#!/usr/bin/env node
const lib = require('imooc-test-lib');
const argv = require('process').argv;
const command = argv[2];

const options = argv.slice(3);
let [option, param] = options
option = option.replace('--', '')

if (command) {
    if (lib[command]) {
        lib[command]()
    } else {
        console.log('无效的命令')
    }
} else {
    console.log('请输入命令')
}

脚手架项目发布

        npm publish

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在vue实战入门基础篇二中,我们将会从零开始搭建一个仿门户网站的实例,这个实例包括了前端页面的设计和后端API的实现。在开始这个实例之前,我们需要选定一个开发框架,这个框架将会支持我们在开发中的需求,并且方便我们的团队协作和项目管理。 在选择框架之前,我们需要考虑以下因素:开发速度、团队协作、可维护性和可扩展性。因此,我们应该选择一个适合我们现有技术栈的框架,并且具备这些因素。 在这个实例中,我们选择了vue.js作为我们的开发框架。vue.js是一个流行的JavaScript框架,它提供了强大的工具来开发富客户端应用程序。它易于使用和学习,并且对于大多数应用程序而言,它具有良好的性能。 在搭建框架时,我们采用了vue-cli工具来建立vue.js的项目模板。vue-cli可以为我们自动配置开发环境、构建工具和其他常见的开发工具,从而减少我们的开发时间。使用vue-cli搭建框架时,我们可以根据我们的需求选择所支持的特性,并且自定义构建配置。 搭建框架后,我们还需要依次配置vue-router、vuex、axios等工具,用于路由管理、状态管理和API请求。这些工具可以加速我们的开发过程,并且有助于我们在开发过程中实现更好的代码组织,提高代码质量和可维护性。 总之,搭建一个好的开发框架是成功的开发的关键之一。我们应该选择一个适合我们项目需求的框架,同时尽可能地利用现有的工具和库来支持我们的开发过程。 ### 回答2: Vue实战入门基础篇二:从零开始仿门户网站实例-开发框架搭建,主要是介绍如何使用Vue.js开发一个门户网站的搭建方法。在此基础篇中,我们将会学习如何使用vue-cli建立Vue.js的基本项目框架,并结合Bootstrap、FontAwesome等前端开发产品来丰富我们的门户网站页面。 首先,我们需要安装Vue CLI,这是Vue.js官方提供的脚手架工具,可以快速生成Vue.js项目的基本架构。安装Vue CLI之后,我们可以通过命令行在终端中进入到目标项目目录,并通过vue create projectName命令来创建一个Vue.js项目。 接下来,我们需要安装Bootstrap和FontAwesome,因为它们是实现我们门户网站样式和布局的重要工具。我们可以通过npm命令来安装它们:npm install bootstrap @fortawesome/fontawesome-free。 安装成功之后,我们可以在Vue.js的组件中使用Bootstrap和FontAwesome提供的样式和图标。在项目开发中,我们可以通过组件化的思想,将各个部分拆分为独立的组件,再通过父子组件的嵌套来构建整个门户网站的页面。 在搭建门户网站页面的过程中,还需要注意一些细节问题。比如在Vue.js中如何使用路由功能来实现不同页面之间的跳转,如何进行页面的布局和调整等等。通过综合运用Vue.js的基本语法和其它前端产品,我们可以初步完成一个仿门户网站的实例。 总之,Vue实战入门基础篇二:从零开始仿门户网站实例-开发框架搭建,是一个非常实用的课程,可以帮助我们了解Vue.js在实际项目开发中的具体应用。掌握这些基础知识之后,我们可以更加专业、高效地进行门户网站开发工作。 ### 回答3: 本次教程是基于Vue.js框架来实现仿门户网站的实例教程,本文将重点介绍如何搭建开发框架。 首先,我们需要安装Vue.js框架,可以通过官网下载或者使用npm命令行工具安装,具体方法可以参考Vue.js官网上的介绍。 安装好Vue.js之后,我们需要使用Vue.js提供的命令行工具Vue CLI来搭建开发框架。首先,我们需要在命令行中输入以下命令: ``` npm install -g @vue/cli ``` 接着,我们可以创建一个新的Vue项目,可以使用以下命令: ``` vue create project-name ``` 其中,project-name是你自定义的项目名称。接下来,我们可以根据自己的需求选择不同的配置。例如,我们可以选择手动配置,来选择需要的插件和功能。然后,我们需要安装一些Vue.js的插件,例如Vue Router和Vuex。 ``` npm install vue-router vuex --save ``` 安装好插件之后,我们需要在项目中创建一些组件和页面。这些组件和页面可以根据实际需求来创建,例如首页组件、新闻组件、产品组件等。在创建组件和页面之前,我们需要在src目录下创建一个views文件夹来存放页面组件,在src/components文件夹下创建组件。 接着,我们可以使用Vue.js提供的语法来编写组件、页面和路由等。在编写代码的过程中,我们可以参考Vue.js官方文档和各种教程、博客等。 总而言之,搭建开发框架是Vue.js实现仿门户网站的第一步。在开发过程中,我们需要不断学习和掌握Vue.js的语法、功能和特点,结合实际需求来不断优化和完善代码,最终实现一个完整的门户网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chengbo_eva

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值