vue系列-第一节:起手式

112 阅读4分钟

附:「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战

项目搭建

1. 脚手架

直接看官网文档,写的很详细:Vue-CLI


步骤:

(1)全局安装脚手架包

yarn global add @vue/cli

(2)创建项目

vue create 项目名

(3)进入配置(全过程)

  1. 选择预设:选最后一个,手动选择功能

  1. 选择项目中要用的插件(实际项目中根据项目所需选择,这里只做参考,项目要用什么就选择什么)

  1. 选择一个CSS预处理器:选 dart-sass

  1. ESLint:默认选项

  1. 代码错误提示:选第二个,提交的时候再告诉我代码错在哪里了(如果你选第一个,会很影响写代码的体验,一写错页面就会报错误)

  1. 单元测试:选 Jest

  1. 配置文件分开放,还是存在package.json文件中:选第一个分开放

  1. 是否保存刚才配置的选项,做为未来创建项目的默认值? ==> No(每个项目用的插件其他都不同,一般不保存)

  1. 创建项目中

  1. 项目创建成功后,在当前命令行终端进入这个项目,并运行这个项目

2. CodeSandbox

  • 建议:不登录可以创建无限个项目,登录后只能创建50个项目

如何使用Vue实例?

方法一:从HTML得到视图(完整版)

使用CDN

  • ](https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js">)

  • 解析:后缀为 vue.js 的是带注释的,体积大一些,后面vue.min.js是压缩版的,省去了很多不要的东西,体积要比后缀为 vue.js 小很多

项目代码

(1)这里我们使用的是Vue完整版的在线CDN

  • index.html
<body>
    <div id="app">
        {{n}}
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</body>
  • main.js
Vue.config.productionTip = false

new Vue({
    el: "#app",
    data() {
        return {
            n: 0
        }
    }
})

输出结果:

(2)使用非Vue完整版的在线CDN

  • index.html
<body>
    <div id="app">
        {{n}}
    </div>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.runtime.min.js"></script>
</body>
  • main.js
Vue.config.productionTip = false

new Vue({
    el: "#app",
    data() {
        return {
            n: 0
        }
    }
})

输出结果:页面显示空白(原因是非完整版的没有编译器,无法从HTML、template获取内容)

小总结:非完整版的vue,只要是从HTML、template查看视图都是不支持的

方法二:用 JS 构建视图(解决非完整版无编译器问题)

使用render

项目代码

  • index.html
  • 这里还是使用的是非完整版的CDN,我们用render函数来解决这个问题
<body>
    <div id="app">
        {{n}}
    </div>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.runtime.min.js"></script>
</body>
  • main.js
Vue.config.productionTip = false

new Vue({
    el: "#app",
    data() {
        return { n: 0 }
    },
    render(h) {
        return h("div", [this.n, h("button", {
            on: { click: this.add }
        }, "+1")])
    },
    methods: {
        add() {
            this.n += 1;
        }
    }
})

输出结果:

方法三:使用 vue-loader(非完整版)

项目代码

  • index.html
<body>
    <div id="app">
        {{n}}
    </div>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.runtime.min.js"></script>
</body>
  • demo.vue
<template>
<div id="app">
    {{n}}
    <button @click="add()">+10</button>
</div>
</template>

<script>
export default {
   data(){
       return {
           n:0
       }
   },
   methods:{
       add(){
           this.n +=10;
       }
   }
}
</script>

<style>
#app{
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}
#app button {
    margin-top: 20px;
    padding: 10px;
    font-size: 20px;
}
</style>
  • main.js
import Vue from 'vue'
import Demo from './demo.vue'

new Vue({
    el: "#app",
    render(h) {
        return h(Demo)
    },
})

输出结果:

SEO优化

作用:让网站在浏览器显示靠前

优化内容:

  • title
  • keyword
<meta name="keyword" value="小何何">
  • description
<meta name="description" value="这个是实时发布前端最新消息的网站">

补充:

  • 在现在看来,SEO就是一个笑话,无论我们设计的再好,人家花几万块钱,就可以把我们挤在后面了,你的网站永远不可能在搜索结果的第一位。

Vue完整版 和 Vue非完整版的区别

解析:

(1)Vue完整版 和 非Vue完整版的引入方式不同

  • Vue完整版是用CDN引入,这个文件名的后缀是 vue.js / vue.min.js(压缩版)
  • 非Vue完整版的引入方式有很多,第一个是CDN引入(后缀文件名叫vue.runtime.js),第二个是webpack引入,第三个就是脚手架(@vue/cli)引入

(2)Vue完整版 和 非Vue完整版的大小不同

  • 完整版的要比非完整版的体积多出40%左右
  • 原因是完整版多一个编译器(这个编译器很复杂,所以占用的体积比较多)

(3)其他

  • Vue完整版下可以在一个组件中创建一个全局组件 或者是 局部组件
  • 非完整版不能在一个组件中创建一个全局组件 或者是 局部组件

总结:非完整版都有解决方案了,所以我们开发时尽量都使用非完整版的,减少用户的下载体积。

总结

(1)总是使用非完整版,然后配合vue-loader 和 vue文件

(2)防错小知识,我们引入文件的时候尽量加上后缀(虽然可以省略,但是如果一个目录下存在两个相同的文件,它们只是后缀不同(一个vue,一个js),这样我们字面是很难理解是哪个文件)