目录
一、使用Idea 新建一个VUE项目
二、项目配置
修改/config/index.js文件:
修改webpack.base.conf.js文件:
在src/main.js中加入:
认识VUE项目的所有文件
调整App.vue,删除无用的
安装支持 scss 的 npm 包
调整 index.vue 和 content.vue 文件index.vue
调整 router 路由文件,不然跑项目还会报错……
运行项目,打开就是首页 page/index 页.
一、使用Idea 新建一个VUE项目
- 打开idea,File - New - Project ,选择“Static Web”
- Next,输入 Project name:my-website
- 打开Idea终端工具 Terminal,输入 `vue init webpack`,如下:
D:\project\IdeaProjects\my-website>vue init webpack
? Generate project in current directory? Yes
? Project name my-website
? Project description 我的个人网站
? Author Rache <liangping880105@163.com>
? Vue build standalone
? Install vue-router? Yes
? Use ESLint to lint your code? No
? Set up unit tests Yes
? Pick a test runner jest
? Setup e2e tests with Nightwatch? Yes
? Should we run `npm install` for you after the project has been created? (recommended) npm
vue-cli · Generated "my-website".
# Installing project dependencies ...
# ========================
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
removed 102 packages and audited 1724 packages in 13.256s
29 packages are looking for funding
run `npm fund` for details
found 99 vulnerabilities (76 low, 9 moderate, 13 high, 1 critical)
run `npm audit fix` to fix them, or `npm audit` for details
# Project initialization finished!
# ========================
To get started:
npm run dev
Documentation can be found at https://vuejs-templates.github.io/webpack
- 运行
方式一:终端窗口输入命令:`npm run dev `
方式二:提前配置好Run/DeBug Configurations,点击运行即可
(参考IDEA配置:)
# 运行成功结果如下
> my-website@1.0.0 dev D:\project\IdeaProjects\my-website
> webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
13% building modules 27/31 modules 4 active ...t\IdeaProjects\my-website\src\App.vue{ parser: "babylon" } is deprecated; we now treat it as { parser: "babel" }.
DONE Compiled successfully in 3439ms10:44:36 ├F10: AM┤
I Your application is running here: http://localhost:8080
Process finished with exit code 1
浏览器访问 http://localhost:8080 即可。
二、项目配置
修改/config/index.js文件:
## 修改默认端口
port: 8080
修改为
port: 8070
## build 项目会生成很多map文件,怎么办?
productionSourceMap: true
修改为
productionSourceMap: false
修改webpack.base.conf.js文件:
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: './src/main.js'
},
修改为:
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: ['babel-polyfill', './src/main.js']
},
在src/main.js中加入:
import 'es6-promise/auto'import promise from 'es6-promise'
import Api from './api/index.js'
import Utils from './utils/index.js'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.prototype.$utils = Utils;
Vue.prototype.$api = Api;
Vue.use(ElementUI);
注:使用static里的文件尽量使用绝对路径,如/static/image/background.png
使用src里的文件则尽量使用相当路径。
认识VUE项目的所有文件
├── README.md // 项目说明文档
├── node_modules // 项目依赖包文件夹
├── build // 编译配置文件,一般不用管
│ ├── build.js
│ ├── check-versions.js
│ ├── dev-client.js
│ ├── dev-server.js
│ ├── utils.js
│ ├── vue-loader.conf.js
│ ├── webpack.base.conf.js
│ ├── webpack.dev.conf.js
│ └── webpack.prod.conf.js
├── config // 项目基本设置文件夹
│ ├── dev.env.js // 开发配置文件
│ ├── index.js // 配置主文件
│ └── prod.env.js // 编译配置文件
├── index.html // 项目入口文件
├── package-lock.json // npm5 新增文件,优化性能
├── package.json // 项目依赖包配置文件
├── src // 我们的项目的源码编写文件
│ ├── App.vue // APP入口文件
│ ├── assets // 初始项目资源目录,回头删掉
│ │ └── logo.png
│ ├── components // 组件目录
│ │ └── Hello.vue // 测试组件,回头删除
│ ├── main.js // 主配置文件
│ └── router // 路由配置文件夹
│ └── index.js // 路由配置文件
└── static // 资源放置目录
src
结构比较简单,我们需要重新配置:
src文件夹:
├── App.vue // APP入口文件
├── api // 接口调用工具文件夹
│ └── index.js // 接口调用工具
├── components // 组件文件夹
├── frame // 子路由文件夹
├── main.js // 项目配置文件
├── page // 页面组件文件夹
├── router // 路由配置文件夹
│ └── index.js // 路由配置文件
├── style // scss 样式存放目录
│ ├── base // 基础样式存放目录
│ │ ├── _base.scss // 基础样式文件
│ │ ├── _color.scss // 项目颜色配置变量文件
│ │ ├── _mixin.scss // scss 混入文件
│ │ └── _reset.scss // 浏览器初始化文件
│ ├── scss // 页面样式文件夹
│ └── style.scss // 主样式文件
└── utils // 常用工具文件夹
└── index.js // 常用工具文件static文件夹(如果是放在
src
目录里面,则每次打包的时候,都需要打包的。这会增加打包项目的时间):├── css // css文件夹 ├── js // js文件夹 ├── image // 图片文件夹 └── font // 字体文件夹
scss引入方法,例
<style lang="scss"> @import "./style/style.scss"; </style>
调整App.vue,删除无用的
<template>
<div id="app">
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'app'
}
</script>
<style lang="scss">
@import "./style/style";
</style>
入口,只有一个空的路由视窗,我们的项目的所有内容,都基于这个视窗来展现。
我们的样式,都将从 src/style/style.scss
这个文件中引用,因此,在 App.vue
这个文件中,直接引用 ./style/style
即可。
安装支持 scss
的 npm
包
npm install node-sass -D
npm install sass-loader -D
npm install style-loader --save-dev
# 网络不好,用:
cnpm install node-sass -D
cnpm install sass-loader -D
cnpm install style-loader --save-dev
# 版本问题,可能会导致运行报错
## 首先清除我们已经安装过的版本:
npm uninstall node-sass
npm uninstall sass-loader
npm uninstall style-loader
## 注意我们清除的时候可以选择全局的清除 全局的安装,否则下次创建 项目还会有同样的错误 执行重复的操作
npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ //淘宝镜像安装
npm install sass-loader@7.3.1 --save-dev //安装7.3.1版本的sass
npm install style-loader --save-dev // 安装style-loader
调整 index.vue 和 content.vue 文件
index.vue
<template>
<div>index page</div>
</template>
content.vue
<template>
<div>content page</div>
</template>
调整 router 路由文件,不然跑项目还会报错……
# 默认的 HelloWorld
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
}
]
})
修改为:
import Vue from 'vue'
import Router from 'vue-router'
import Index from '@/page/index'
import Content from '@/page/content'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
component: Index
}, {
path: '/content/:id',
component: Content
}
]
})
首页,就是我们的
Index
组件:id
是什么意思?
内容页面是要展示N条内容,如何区分,就是根据这个ID来区分的,所以,这里使用了动态路由匹配。