vueday06
内容概要
- vue的项目目录介绍
- es6导入导出语法
- 小练习-登录功能
- scoped
vue项目目录介绍
pycharm 打开项目,运行项目的两种方式
- 在命令行中执行(注意路径)

如果想pycharm,点击绿色箭头执行





然后点绿色的小箭头就可以了
vue项目目录介绍
myfirstvue 项目名
node_modules 非常多的第三方模块,以后把项目复制给别人是[上传git要忽略掉],这个文件夹删除掉,很多的小文件,项目的依赖,项目要运行,没有它不行 如果没有只需要执行
cnpm install 根据package.json 的依赖包,安装好依赖
pubilc # 文件夹
-favicon.ico # 网站小图标
-index.html #spa 单页面应用,以后整个 vue项目都是用一个html,但你不用动他
src # 文件夹--以后咱们都动这里面 的
-assets # 静态资源,以后前端用的图 片,js, css 都放在这里
-logo.png # 图片
-components # 放组件的地方, xx.vue,小组件
HelloWorld.vue #提供的展示组件
- Router # 就会有这个文件夹,下面有个 index.js
index.js
-store # 安装了 Vuex 就会有这个文件夹,下面 有个 index.js
index.js
- views # 页面组件 大组件
- AboutView.vue
- HomeView.vue
- App.vue # 跟组件,new Vue 实例管理了 div,以后 把原来卸载div中东西,现在都写在App.vue
- main.js # 项目的启动文件
# vue 项目目录介绍
.gitignore # git的忽略文件,后面学了git就会了
babel.config.js # bable配置文件,不用动
jsconfig.json # 配置文件,不用动
package.json #不用动,安装了第三方模块,它自动增加
package-lock.json # 锁定文件,忽略掉
README.md # 用户手册
vue.config.js # vue的配置文件

es6导入导出语法
App.vue, main.js, About.vue 写了些什么
看xx.vue组件学到的重点
记住,以后开发vue项目,都按照这个模式来
-
新建xx.vue
-
在xx.vue中就三块内容
-
以后组件的html内容,都写在这里
<template> </template> -
以后该组件使用的样式,都写在这
<style> </style> -
以后js 的东西都写在
<script> </script>
-
main.js 学到的
找到index.html 中的id为app的div,以后都在App.vue中写
new Vue({
render:h => h(App)
}).$mount("#app")
导入导出语法
python 创建包, 在其他py文件中导入
.js 从es6开始,也支持包的导入和导出
默认导出语法(用的最多),只能导出一个,一般导出一个对象
导出语法
export default 一般是一个对象
导入语法
import 别名 from "路径"
以后 别名 就是 导出对象
新建一个 js 文件
写一些内容

然后我再别的文件导入


这是因为,js 还需要把这些名字导出,不导出用不了


命名导出语法
-导出语法 可以导出多个



导入的简写形式
包下的 index.js 导入的时候,不用写导index.js 的路径, 它等同于 python的__init__.py


vue项目编写步骤
-
以后只需要写xx.vue
- 页面组件
- 小组件 给页面组件用的
-
组件中导出
export default { name: 'AboutView', data() { return { name: "lqz", age: "18" } }, }
-
在别的组件中要用,导入,注册
导入
import HelloWorld from "../components/HellpWorld.vue" 注册 export default{ components:{ HelloWorld } } -
注册以后,在这个组件中就可以使用导入组件,写在
<template>自定义属性
登录小练习
登录因为要向后端发送请求所以需要下载axios
cnpm install axios -S 带着 -S 会自动把当前依赖加入到package.json中
前端代码 AboutView
<template>
<div class="about">
<el-row>
<el-col :span="12" :offset="6">
<h3 class="top">登录页面</h3>
<el-input v-model="username" placeholder="请输入用户名"></el-input>
<br>
<br>
<el-input placeholder="请输入密码" v-model="password" show-password></el-input>
<el-button type="success" @click="myClick">登录</el-button>
</el-col>
</el-row>
</div>
</template>
<script>
import lqz from "@/lqz"
export default {
name: 'AboutView',
data() {
return {
username: '',
password: '',
}
},
methods: {
myClick() {
let myData = JSON.stringify({"username": this.username, "password": this.password})
let aa = lqz.sendData("post", "http://127.0.0.1:8000/login/", myData)
aa.then(res => {
if (res.msg.non_field_errors) {
alert(res.msg.non_field_errors[0])
} else {
alert(res.msg)
}
})
}
}
}
</script>
<style>
.top {
text-align: center;
}
</style>
新建的 js文件
import axios from "axios";
function sendData(met, url, data, token) {
let aa = axios({
method: met,
url: url,
data: data,
headers: {
"Content-Type": "application/json",
"token": token
}
}).then(res => res.data).catch(error => error.request)
return aa
}
export default {sendData}
后端的正常写
解决跨域
1 装模块
pip3 install django-cors-headers -i https://pypi.tuna.tsinghua.edu.cn/simple/
2 注册app
'corsheaders'
3 中间件修改
'corsheaders.middleware.CorsMiddleware',
4 修改配置文件
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)
CORS_ALLOW_HEADERS = (
'XMLHttpRequest',
'X_FILENAME',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
'Pragma',
'token'
)
scoped
父组件的样式,在子组件中会生效,加入scoped让scoped让该样式只在当前组件中生效
<style scoped>
h1 {
background-color: chartreuse;
}
</style>
作业
1 创建出vue项目
2 使用导入导出语法,把 登录功能的发送请求,抽取到 一个包中 ,把登录功能写完
-导入导出
-默认导出
-命名导出
4 创建一个组件,显示一张图片,图片地址通过父组件传入
在HomeView中使用这个组件
5 在图片页组件,加一个button,点击把图片地址显示在父组件中 (子传父)
6 使用插槽,随便定制一个图片样子
----------
7 使用vue项目把查询所有汽车 v-for循环显示出来

浙公网安备 33010602011771号