Vue-1 Vue cli3 多頁面配置

1 準備工作

1.1 先查看版本
npm -V
npm@6.9.0 D:\Program Files\nodejs\node_modules\npm
vue -V
vue == 3.11.0
1.2 創(chuàng)建項目
vue create templates

會創(chuàng)建一個名為templates的項目
目錄結(jié)構為:


初始結(jié)構.png
npm run serve

App running at:
- Local:   http://localhost:8080/
- Network: http://192.168.43.36:8080/

Note that the development build is not optimized.
To create a production build, run npm run build.

運行npm run serve牙捉,可以在

http://localhost:8080/
http://192.168.43.36:8080/

看到這個頁面:


初始index.png

2 多頁面配置

2.1 修改目錄

1新思、在src目錄下創(chuàng)建一個pages文件夾搔体,
2琉历、在pages文件夾下面創(chuàng)建index文件夾,
修改之后文件夾結(jié)構為:


第一次修改目錄結(jié)構.jpg

3亚兄、把public文件夾下的index.html移到index文件夾低滩,
4、把components文件夾下面的HelloWorld.vue移到index文件夾欺抗,(這里可以不移動售碳,因為這個是默認生成的一個例子,實際開發(fā)中绞呈,創(chuàng)建項目生成的這個頁面我們根本用不到贸人,移動只是為了方便做例子,不另外寫一個index頁面)
5佃声、把src文件夾下的App.vue和main.js都移到index文件夾下面

這時候目錄結(jié)構:


第一次移動文件.png
2.2 理一下邏輯
index.html

這個文件便是打開首頁顯示的文件艺智。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title>templates</title>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but templates doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div> <!-- 記住這里!;鳌J稹!-->
    <!-- built files will be auto injected -->
  </body>
</html>

記住 id="app"這行

App.vue

內(nèi)容如下:

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <HelloWorld msg="Welcome to Your Vue.js App"/>
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'app',
  components: {
    HelloWorld
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

這里就是寫index.html中id="app"這個div的內(nèi)容志鹃。
并且引入了HelloWorld.vue

components: {
    HelloWorld
  }

包含了這個組件

<HelloWorld msg="Welcome to Your Vue.js App"/>

給HelloWorld.vue傳入了一個msg變量

HelloWorld.vue
<template>
  <div class="hello">
    <h1>{{ msg }}</h1>  <!--傳入的msg變量在這里 -->
    <p>
      For a guide and recipes on how to configure / customize this project,<br>
      check out the
      <a  target="_blank" rel="noopener">vue-cli documentation</a>.
    </p>
    <h3>Installed CLI Plugins</h3>
    <ul>
      <li><a  target="_blank" rel="noopener">babel</a></li>
      <li><a  target="_blank" rel="noopener">eslint</a></li>
    </ul>
    <h3>Essential Links</h3>
    <ul>
      <li><a  target="_blank" rel="noopener">Core Docs</a></li>
      <li><a  target="_blank" rel="noopener">Forum</a></li>
      <li><a  target="_blank" rel="noopener">Community Chat</a></li>
      <li><a  target="_blank" rel="noopener">Twitter</a></li>
      <li><a  target="_blank" rel="noopener">News</a></li>
    </ul>
    <h3>Ecosystem</h3>
    <ul>
      <li><a  target="_blank" rel="noopener">vue-router</a></li>
      <li><a  target="_blank" rel="noopener">vuex</a></li>
      <li><a  target="_blank" rel="noopener">vue-devtools</a></li>
      <li><a  target="_blank" rel="noopener">vue-loader</a></li>
      <li><a  target="_blank" rel="noopener">awesome-vue</a></li>
    </ul>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>
main.js
import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

render: h => h(App)這句話的意思是創(chuàng)建 App element
就是下面這個函數(shù)的意思

render: function (createElement) {
    return createElement(App);
}
2.3 修改文件名稱

App.vue改為index.vue;
main.js改為index.js

2.4 修改文件內(nèi)容
index.vue
<template>
  <div id="app">
    <img alt="Vue logo" src="../../assets/logo.png"> 修改這里
    <HelloWorld msg="Welcome to Your Vue.js App"/>
  </div>
</template>

<script>
import HelloWorld from './HelloWorld.vue'  修改這里

export default {
  name: 'app',
  components: {
    HelloWorld
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

index.js
import Vue from 'vue'
import App from './index.vue'  修改這里

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

3 配置vue.config.js

在src文件夾同一級目錄添加一個名為vue.config.js的js文件夭问。


添加vue.config.js.png

內(nèi)容如下:

module.exports = {
    publicPath: '/',
    outputDir: 'dist',
    assetsDir: 'assets',
    indexPath: 'index.html',
    filenameHashing:true,
    pages: {
        index: {
            entry: "./src/pages/index/index.js", // 配置入口js文件
            template: "./src/pages/index/index.html", // 主頁面
            filename: "index.html", // 打包后的html文件名稱
            title: "首頁", // 打包后的.html中<title>標簽的文本內(nèi)容
            // 在這個頁面中包含的塊,默認情況下會包含
            // 提取出來的通用 chunk 和 vendor chunk弄跌。
            chunks: ['chunk-vendors', 'chunk-common', 'index']
        }
        },
}

具體配置請查看官方文檔

啟動 npm run serve
這時候可以重新打開首頁甲喝。
我們做到這里就完成了首頁頁面配置。

4 新增一個頁面

新增一個頁面铛只,隨便取個名字 baicai
在pages文件夾下新增一個baicai文件夾
在白菜文件夾下新建幾個文件

baicai.html
baicai.vue
baicai.js
新增baicai.jpg

編輯文件內(nèi)容

baicai.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title>baicai</title>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but templates doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>
baicai.vue
<template>
  <div id="app">
    <img alt="Vue logo" src="../../assets/logo.png">
    <h1>一顆數(shù)據(jù)小白菜</h1>
  </div>
</template>

<script>
export default {
  name: 'app',
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
baicai.js
import Vue from 'vue'
import App from './baicai.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

5 配置router

在src下創(chuàng)建router文件夾埠胖,在router文件夾下創(chuàng)建router.js
修改內(nèi)容為:

import Vue from 'vue'
import Router from 'vue-router'

import index from '../pages/index/index.vue';
import baicai from '../pages/baicai/baicai.vue';

Vue.use(Router);

const routers = [
    {
        path: '/',
        redirect: '/index',
        component: index,
        meta: {requiresAuth: false}
    },
    {
        path: '/index',
        name: 'index',
        component: index,
        meta: { requiresAuth: false },
    },
    {
        path: '/baicai',
        name: 'baicai',
        component: baicai,
        meta: { requiresAuth: false },
    },
];
const router = new Router({
    mode: 'history',
    routers,
});

export default router;

6 重啟服務

打開http://localhost:8080/baicai

baicai.png

7 首頁跳轉(zhuǎn)

修改index文件夾下的 index.vue

<template>
  <div id="app">
    <img alt="Vue logo" src="../../assets/logo.png">
      <div>
        <a href="baicai.html">跳轉(zhuǎn)到白菜頁面</a> 修改這里
      </div>
    <HelloWorld msg="Welcome to Your Vue.js App"/>
  </div>
</template>

<script>
import HelloWorld from './HelloWorld.vue'

export default {
  name: 'app',
  components: {
    HelloWorld
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

重啟服務糠溜,打開http://localhost:8080

跳轉(zhuǎn)到白菜頁面.png

點擊跳轉(zhuǎn)到白菜頁面
就會跳轉(zhuǎn)到http://localhost:8080/baicai.html

一顆數(shù)據(jù)小白菜.png

8 總結(jié)

多頁面配置其實就是2個步驟:
1、配置vue.config.js中的pages
2直撤、配置router

demo地址
GitHub

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末非竿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子谋竖,更是在濱河造成了極大的恐慌红柱,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蓖乘,死亡現(xiàn)場離奇詭異锤悄,居然都是意外死亡,警方通過查閱死者的電腦和手機嘉抒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門零聚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人些侍,你說我怎么就攤上這事隶症。” “怎么了岗宣?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵蚂会,是天一觀的道長。 經(jīng)常有香客問我耗式,道長胁住,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任纽什,我火速辦了婚禮措嵌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芦缰。我一直安慰自己企巢,他們只是感情好,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布让蕾。 她就那樣靜靜地躺著浪规,像睡著了一般。 火紅的嫁衣襯著肌膚如雪探孝。 梳的紋絲不亂的頭發(fā)上笋婿,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機與錄音顿颅,去河邊找鬼缸濒。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的庇配。 我是一名探鬼主播斩跌,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捞慌!你這毒婦竟也來了耀鸦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤啸澡,失蹤者是張志新(化名)和其女友劉穎袖订,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗅虏,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡洛姑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了旋恼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吏口。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡奄容,死狀恐怖冰更,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昂勒,我是刑警寧澤蜀细,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站戈盈,受9級特大地震影響奠衔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜塘娶,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一归斤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刁岸,春花似錦脏里、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酝碳,卻和暖如春矾踱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疏哗。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工呛讲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓贝搁,卻偏偏與公主長得像刃宵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子徘公,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 本文轉(zhuǎn)載于前端工匠牲证。如有侵權聯(lián)系本人立刻刪除 一、首先帶著問題 要學習vue-ro...
    qiaoguoxing閱讀 457評論 0 1
  • 本文基于工作項目開發(fā)关面,做的整理筆記前段時間公司有的小伙伴剛開始學習vue坦袍,就直接著手用在新項目上,以項目實戰(zhàn)步步為...
    SeasonDe閱讀 7,194評論 16 39
  • 一等太、前言 要學習vue-router就要先知道這里的路由是什么捂齐?為什么我們不能像原來一樣直接用 標簽編寫鏈接哪?...
    浪里行舟閱讀 67,652評論 12 203
  • 風路過雨的黃昏 落葉飄過窗的玻璃 我缩抡,依窗而立 點一支煙奠宜,細數(shù)雨滴 燈映在夜的城中村 寺廟的鐘聲陣陣響起 我,撐傘...
    木子魚說閱讀 384評論 0 4
  • 對于情緒瞻想,佛法中有一個特別生動的一句話:不要被第二支毒箭所傷害压真。第一支毒箭是發(fā)生的事件,第二支毒箭是我們由此而產(chǎn)生...
    F公子閱讀 2,152評論 0 2