当前位置: 首页 > Web前端 > vue.js

前端脚手架是如何工作的?

时间:2023-04-01 01:15:45 vue.js

随着前端工程工具的兴起,在日常开发中,人们很少直接开发html、js、css。他们总是使用前端框架和相应的脚手架来初始化一个项目,比如vue的vue-cli,react的create-react-app等,我们只需要全局安装这些脚手架,然后输入vuecreatename或者create-react-app名称,方便初始化对应的项目。有没有想过安装脚手架后这些命令背后做了什么?以vue-cli为例,首先我们全局安装vue-cli:npminstall-g@vue/cli安装成功后,通过vue-V查看版本,证明安装成功,全局有vue命令。打开终端输入which查看vue命令对应的可执行文件路径:$whichvue/usr/local/bin/vue查看bin目录下vue文件对应的信息:ls-l/usr/本地/斌/|grepvuelrwxr-xr-x1xxxadmin39Sep272018vue->../lib/node_modules/@vue/cli/bin/vue.js我们发现这里的vue只是一个软链接,真正的文件指向这里../lib/node_modules/@vue/cli/bin/vue.js。好了,我们继续找这个可执行文件:ls/usr/local/lib/node_modules/@vue/cli/binvue.jsBingo!就是这样!也就是说,我们全局执行的vue命令就是在执行这个vue.js。但是你要问了,这明明是一个js文件,怎么能直接执行呢?别担心,让我们打开这个文件看看:#!/usr/bin/envnode//在要求/做任何其他事情之前检查节点版本//用户可能在一个非常旧的节点版本上constchalk=require('chalk')constsemver=require('semver')...玄机在第一行:#!/usr/bin/envnode,有兴趣的可以看看什么是沙帮。简单的说,这句话就是指定这个vue.js脚本的执行使用node作为解释器。也就是说,加上这句话后,就可以直接通过./vue.js直接执行这个js脚本了,效果和nodevue.js是一样的。但是细心的你还有一个疑问,为什么我安装了@vue/cli,注册的命令却是vue?其实我们看一下@vue/cli的package.json:{"name":"@vue/cli","version":"3.8.2","description":"命令行界面快速vue.jsdevelopment","bin":{"vue":"bin/vue.js"}......}这里通过bin指定可执行文件的命令名和可执行文件的路径,npm在安装依赖时,如果在依赖的package.json中指定了bin信息,则会创建一个全局软链接指向该命令对应的可执行文件。有兴趣的可以看看npm的官方文档:bin在package.json中的作用。