饮水思源,不要忘了把老师的链接放上。


不学这个还不知道叫“脚手架”的东西,脚手架不是盖房子的时候外面那层绿色的结构吗?

我理解VUE CLI可以帮助搭建一个结构,这个结构包括routers、models、views等等的东西吧。

安装

先安装vue cli
npm i @vue/cli -g

创建项目
vue create . //在已有目录下
vue create project //新建目录
npm run serve //就可以跑起来了

结构
在vue cli的世界里,一个网页被打算成为不同的模块component,不同的模块之间是可以互相嵌套的。
每个component都由三部分组成:

  1. template,其实就是这个模块的html结构
  2. script,其实是这个模块的业务逻辑
  3. style,其实是这个模块的css

我现在还不太能够理解为什么要把网页打散成这样的一个个component,管理起来会不会很麻烦?比如如果每个模块都需要使用同一套css怎么办?每个模块使用相同的js又怎么办?另外就是如果每个模块引入单独的外部js,应该怎么弄?
细化了肯定是好事,不过管理的办法要好才行。

结构
第一个文件:public下面的index.html,里面需要定义一个<div id="app"></div>作为一个Vue控制区域
第二个文件:根目录下的main.js,作为项目的入口文件,会定义router、store等等
第三个文件:App.vue,作为模板入口文件

错误:Do not use 'new' for side effects

解决办法:加注释/ eslint-disable no-new /
eslint语法的问题,具体解决办法在这里

错误:按照视频敲的代码,模板里的内容没有出来

main.js

import Vue from 'vue'
import App from './App.vue'

/* eslint-disable no-new */
new Vue({
  el: '#app',
  render: c => c(App)
})

App.vue


<template>
  <div id="app">123</div>
  {{name}}
</template>

<script>
export default {
  name: 'App',   
  data: () => {
    return {
      name: 'Alex'
    }
  }
}
</script>

<style scoped>
</style>

index.html

<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>第一个项目</title>
</head>
<body>
  <div id="app"></div>
</body>
</html>

不知道为什么。
解决办法:重新创建了一个项目,对比code后发现,index.html和App.vue都没有问题,但是main.js的code很不一样。系统自带的代码是:

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

对比后觉得,可能是因为Vue的版本不一样导致的。似乎正确的代码相比而言更加简洁一点。
首先import { createApp } from 'vue'
然后import App from './App.vue' 这个跟之前是一样的
最后createApp(App).mount('#app') 看起来是用createApp这个方法,直接使用App这个模板名称,并使用mount来指定index.html的对应的操控部分来起作用的。

回到原来的项目里,将main.js改成上面这段代码,就可以显示123了。

script里的data

之前学习入门课程的时候,变量是直接在script的data里面定义的,在VUE CLI里data变成了一个会return一个对象的函数,所以要写的话就得变成这样:

<script>
export default {
  name: 'App',  //这里定义了这个组件的名称,在main.js里调用的时候要用到
                //我尝试把App改成小写app,发现居然没有什么影响,所以main.js调用的应该是App.vue的文件名,所以这个name在这里有什么用呢?
  data: () => {
    return {
      name: 'Alex'
    }
  }
}
</script>

我发现所谓箭头函数,其实原来的写法是 function () {},把function省略掉,然后用一个箭头在括号和花括号之间表示return,其实并不复杂。

添加component组件

在component文件夹下面新建一个以.vue后缀的文件,并包含三个模块(template, script, style)。
之后在App.vue的script里面,将其import并在components里面将名称注册。
之后在App.vue的template里面放置一个容器,可以使用组件的名称,比如<One></One>
(在其他一个视频里学到,如果名称是驼峰命名,可以在template使用中横线和小写字母来命名容器,比如oneTwo可以使用<one-two></one-two>来做容器)

<script>
import One from './components/One.vue'
export default {
  name: 'One',
  components: {
    One: One
  }
}
</script>

store文件夹使用vuex

最后编辑:2021年01月05日 ©著作权归作者所有

发表评论