.全局安装脚手架:cnpm install -g @vue/cli
//工具将被安装到当前使用的node版本的mode_modules下
vue-cli:是vue命令行工具,需要安装它才能直接通过vue命令来操作其他的操作
查看是否安装成功:vue-V
// 如果安装成功会出现当前vue-cli的版本
vue create myapp / vue ui:使用图形界面创建项目
目录/文件 | 说明 |
---|---|
node_modules | 项目需要使用的依赖文件 |
public | 静态资源文件 |
src | 开发目录,基本上绝大多数工作都是在这里开展的 |
tests | 测试 |
.browserslistrc | 浏览器版本的设置 使用最新的版本 |
.editorconfig | 编辑器的设置 |
.eslintrc.js | 代码格式校验 |
.gitignore | git的忽略文件 |
babel.config.js | babel配置文件 |
cypress.json | 测试的插件配置 |
package.json | 项目的一个描述的文件 |
postcss.config.js | css的配置 |
tests | 测试 |
tests | 测试 |
assets | 静态资源的文件 |
---|---|
components | 项目中需要的组件 |
views | 应用中的页面 (路由找页面,页面找组件) |
App.vue | 总页面 |
main.js | 入口逻辑文件 — 视图绑定到元素上 |
registerServiceWorker.js | 上线执行的一个文件 |
router.js | 路由 |
store.js | 状态管理器 |
修改package.json文件
在package.json文件中,增加运行命令(可加可不加):
“dev”: “cnpm run serve”,
在终端输入:cnpm run serve 让项目运行起来
可以看到,地址为http://localhost:8080/
在浏览器中打开,初始项目如下显示:
a.修改App.vue
将App.vue里原来样式删除,只留下基本结构,再添加js样式
当点击底部的时候,container可以变化
注:template内部只能有一个顶级标签
修改base.scss中responsive-type的属性值(自动适配屏幕)
在App.vue中导入scss文件
html,body,#app{
@include rect(100%,100%);
}
#app{
@include flexbox(); // 声明其为弹性盒布局
@include flex-direction(column); //弹性盒的方向
.container{
@include flex(); // flex:1
@include rect(100%,auto); //因为flex(),垂直方向默认宽度为.1px
@include flexbox();
@include flex-direction(column);
.header{
@include rect(100%,0.44rem);
@include background-color(#f99);
}
.content{
@include flex(); // 除了头部和底部剩下的空间
@include rect(100%,auto);
}
}
.footer{
@include rect(100%,0.5rem);
@include background-color(#efefef);
}
}
此时页面效果:
##### 3. 设置页面底部
a.初步结构
初步样式:
ul{
@include rect(100%,100%);
@include flexbox();
li{
@include flex();
@include flexbox(); //元素水平垂直居中
@include justift-content();
@include align-items();
}
}
添加图标
网址:https://www.iconfont.cn/search/index
搜索图标,并且加入购物车
将图标添加至项目
复制代码
在publice下的index.html文件中将刚才复制的地址引入
复制刚才加入购物车的图标的代码
把图标代码依次放进span标签
首页
效果:
再修改样式
li标签下加一条:@include flex-direction(column);
span{
@include font-size(24px);
}
p{
@include font-size(12px);
}
views目录下创建四个文件夹,分别代表首页、分类页面、购物车页面、个人中心页面,文件夹下面再创建vue文件
将各部分组件依次抽离出来:
首页头部
首页内容
抽离底部组件:
在src目录下的components里创建文件:Footer.vue
在router.js中导入组件
export default new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/', //路由的重定向
name: 'home',
},
{
path: '/home',
name: 'home',
component: () => import('@/views/home/index.vue')
},
{
path: '/kind',
name: 'kind',
component: () => import('@/views/kind/index.vue')
},
{
path: '/cart',
name: 'cart',
component: () => import('@/views/cart/index.vue')
},
{
path: '/user',
name: 'user',
component: () => import('@/views/user/index.vue')
}
]
})
根据路由变化显示不同视图:
告诉 Vue Router 在哪里渲染它们
路由的声明式跳转
将li标签替换成router-link
控制路由的变化, , src/components/common/Footer.vue
使用 router-link 组件来导航.
通过传入 to 属性指定链接
router-link 默认会被渲染成一个 a 标签,可以使用 tag 属性生成目标标签
li样式下方添加
&.router-link-active{
@include color(#f99); //设置文本颜色
}
安装模块:cnpm / npm i axios -S
src/views/home/index.vue中
拿到数据
布局列表组件
定义组件:在src/components下新建文件Prolist.vue
-
标题
演员
评分: 9.0
index.vue中引入
import Prolist from '@/components/Prolist'
注册组件
components: {
prolist: Prolist
},
渲染数据
首页请求完的数据传递给Prolist.vue
index.vue中
data () {
return {
prolist:[]
}
}
this.prolist = res.data
Prolist.vue中
App.vue中content样式增加一条:
滚动条显示
@include overflow(auto);
-
{{ item.title }}
演员:
{{ itm.name }} /
导演:
{{ itm.name }} /
评分: {{ item.rating.average }} / 票房: {{ item.collect_count }}
public/index.html 添加如下代码: