惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
F
Full Disclosure
Cloudbric
Cloudbric
Blog — PlanetScale
Blog — PlanetScale
W
WeLiveSecurity
N
News and Events Feed by Topic
T
Troy Hunt's Blog
V2EX - 技术
V2EX - 技术
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
B
Blog
GbyAI
GbyAI
C
Check Point Blog
B
Blog RSS Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Recorded Future
Recorded Future
The Last Watchdog
The Last Watchdog
N
News and Events Feed by Topic
T
The Blog of Author Tim Ferriss
O
OpenAI News
V
V2EX
人人都是产品经理
人人都是产品经理
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
WordPress大学
WordPress大学
www.infosecurity-magazine.com
www.infosecurity-magazine.com
S
Security @ Cisco Blogs
C
Cisco Blogs
Security Latest
Security Latest
S
Security Affairs
V
Visual Studio Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
Last Week in AI
Last Week in AI
AWS News Blog
AWS News Blog
雷峰网
雷峰网
Apple Machine Learning Research
Apple Machine Learning Research
PCI Perspectives
PCI Perspectives
博客园_首页
U
Unit 42
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
N
Netflix TechBlog - Medium
L
LINUX DO - 热门话题
H
Hacker News: Front Page

博客园 - zhouyu

shardingsphere实现按月分表 Vue3手册译稿 - 深入组件 - 插槽 vscode Vue3 多根节点语法检验错误fix Vue3手册译稿 - 深入组件 - 自定义事件 Vue3手册译稿 - 深入组件 - 非prop属性 Vue3手册译稿 - 深入组件 - pros Vue3手册译稿 - 深入组件 - 组件注册 Vue3手册译稿 - 基础 - 组件基础 Vue3手册译稿 - 基础 - 表单输入绑定 Vue3手册译稿 - 基础 - 事件处理 Vue3手册译稿 - 基础 - 列表渲染 Vue3手册译稿 - 基础 - 条件渲染 Vue3手册译稿 - 基础 - Class和Style绑定 Vue3手册译稿 - 基础 - 计算属性及监听器 Vue3手册译稿 - 基础 - Data属性及方法 Vue3手册译稿 - 基础 - 模板语法 Vue3手册译稿 - 基础 - 应用&组件实例 Vue3手册译稿 - 基础 - 介绍 元旦三天假期,实现一个电商退单管理系统【四】-手机客户端实现
Vue3手册译稿 - 基础 - 安装
zhouyu · 2021-02-26 · via 博客园 - zhouyu

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

第二步,进入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,且其实你在最终打包时并不需要编译器,因此你只需要运行时进行构建。