Vue3x基础 - 安装

安装

Vue.js是一种渐进式可扩展框架,有多种方式与现有项目进行集成。
以下提供三种将Vue.js集成到项目中的方法:

  1. 通过引用CDN包的方式集成。
  2. 使用NPM进行安装。
  3. 使用官方提供的CLI脚手架,按流程步骤自动导入内置的Vue框架(例如,热重载、保存时lint等)

Vue开发者工具

目前是Beta版本 - Vuex及路由集成仍然在开发中。
使用Vue时,推荐在你的浏览器中安装Vue开发者工具进行应用程序调试、变量监控以及很多友好用户接口。
获取Chrome扩展
获取Firefox扩展
获取独立Electron应用

CDN方式

开发和学习目的,可以用以下方式引入最新版本

<script src="https://unpkg.com/vue@next"></script>

生产环境中,推荐引入一个特定版本号的Vue.js,避免因新版本发布造成的意外错误。

NPM方式

NPM是在构建大型Vue项目时的推荐使用方式,它可以和如Webpack或Rollup打包模块配合使用,Vue同时配套提供工具用来编写单文件组件。

# 在应用目录,执行以下语句安装最终稳定版
$ npm install vue@next

执行命令结果如下:


安装

生成目录结构如下:


目录结构

CLI方式

Vue提供一个官方的CLI,为单页面应用(SPA)快速搭建复杂的脚手脚,它提供内置能力的现代前端工作流步骤化构建,只需要几分钟就可以搭建和运行热重载、保存时lint和产品化的程序,更多CLI功能详见the Vue CLI docs

说明
CLI假定你已经具备Node.js和相关构建工具的知识,如果你是新手,强烈建议在使用CLI前不使用任何构建工具的情况下通读Vue介绍
Vue3中,搭配Vue CLI4.5,npm语法为@vue/cli,升级已有项目,你需要重新全局安装最新@vue/cli版本:

yarn global add @vue/cli
# OR
npm install -g @vue/cli

然后,在vue项目中,运行

vue upgrade --next

Vite

Vite是一个Web开发构建工具,由于本地ES模型导入方法,可以快如闪电般的为项目提供相应的代码。
在终端中执行如下命令,可以将Vue工程快集成Vite
npm方式:

$ npm init @vitejs/app <project-name>
$ cd <project-name>
$ npm install
$ npm run dev

或者使用Yarn:

$ yarn create @vitejs/app <project-name>
$ cd <project-name>
$ yarn
$ yarn dev

第一步:选择一个模板,可以选择vue,如果使用ts可以选择vue-ts


vite

第二步,进入project-name目录,执行:

npm install

第三步:

npm run dev

结果如下


运行

浏览http://localhost:3000

预览

不同构建版本的说明

npm包的dist目录,有很多不同版本的Vue.js。以下是不同用例下该使用dist下哪个文件的概要说明

这里啰嗦两句便于理解客户端构建工具
类似服务端开发,如java我们需要发布为.class文件,c#我们需要发布为dll文件,然后才应用于生产环境。
客户端打包工具,会将.vue等文件打包成javascript,以使浏览器能够解释运行,同时对javascript文件进行压缩,变量替换等,以提高执行效率。
常用的客户端打包工具有鼎鼎大名的webpack,以及rollup,parcel和vite(vite应该是一种打包工具了吧)等。
另,java有的第三方jar包我们一般使用maven进行管理,c#我们使用nuget,客户端webpack等工具也会自动进行第三方依赖管理

使用CDN无构建工具

vue(.runtime).global(.prod).js

  • 直接使用标签<script src=".....">,Vue 会被注册为一个全局的变量。
  • 浏览器内置模板编译
    • vue.global.js包含编译器和运行时的完整版,构建过程中支持动态模板编译
    • vue.runtime.global.js 仅预编译了构建过程中的运行时和必要的模板。
  • 内嵌全部vue核心内部包 - 即它是一个对任何其他文件没有依赖的单个文件,这意味着你要把这单个文件全部内容包含进来,且该文件仅仅是为了保证你已获取了相同的代码实例(好吧,没明白这句话意思)。
  • 包含生产/开发分支的硬代码,生产构建版本已提前压缩过,生产环境使用*.prod.js

说明
全局构建并不是UMD版本,他们被构建为IIFEs(立即执行函数)且只能使用<script src="....">标签引入。

有构建工具

vue(.runtime).esm-bundler.js

  • 使用打包(构建)工具如webpack、rollup和parcel
  • 留下 prod/dev 分支的 process.env.NODE_ENV 守卫(必须由构建工具替换)
  • 不提供压缩版本(与其余代码一起打包压缩)
  • 导入依赖(如:@vue/runtime-core,@vue/runtime-complier
    • 导入的依赖项也是esm-bundler构建,同步也会导入他们的依赖(例如@vue/runtime-core,@vue/runtime-compler)
    • 这意味着你可以单独安装/导入这些依赖而不会造成这些依赖项有不同的实例,但你必须要保证他们有相同的版本
  • 浏览器内置模板编译
    • vue.runtime.esm-bundler.js默认)仅运行时,且要求所有模板必须预编译。这是构建工具的默认入口(通过package.js的module字段),因为当使用构建工具模板时一般都是预编译的(例如:*.vue文件)
    • vue.esm.bundler.js:包含运行时编译器。当你使用了构建工具但仍然想编译运行时模板(例如,in-DOM模板或通过javascript字符的内联模板)。你需要在构建工具中配置vue别名到这个文件。

服务端渲染

vue.cjs(.prod).js:

  • 服务端使用Nodejs通过require()渲染。
  • 如果使用webpack指定target: 'node'且正确的使用vue进行描述,发布时此文件将会载入。

运行时 + 编译器 VS 仅运行时

如果你需要在客户端编译模板(例如:传递字符至模板选项,或者使用in-DOM HTML挂载一个元素作为模板),你需要编译器,像这样构建完整版本

//需要编译器
Vue.createApp(
    template: '<div>{{hi}}</div>'
)
//不需要编译器
Vue.createApp(
    render() {
        return Vue.h('div',{},this.hi)
    }
)

当使用vue-loader时,*.vue文件中的模板会在构建时预编译为javascript,且其实你在最终打包时并不需要编译器,因此你只需要运行时进行构建。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容