上节回顾
| |
| -局部 |
| -全局 |
| |
| |
| -一旦组件化开发----》组件间通信 |
| -父传子:自定义属性 |
| |
| -子传父:自定义事件 |
| -ref属性: |
| -普通标签:this.$refs.名字 dom对象,进行dom操作 |
| -组件上:this.$refs.名字 组件对象,使用组件数据,调用函数 |
| |
| |
| |
| -1 使用函数,页面刷新,函数会重新运算 2 想把函数当属性用 |
| -computed:{ |
| price(){ |
| |
| } |
| } |
| |
| -2 通过计算属性,重写过滤案例 |
| -newDataList做成计算属性,v-for直接循环它 |
| -newDataList使用的变量只要发生变化,它就会重新运算,使用了mytext,只要input输入内容,它就会重新运算,不需要加事件了 |
| |
| |
| |
| |
| -1 data中定义的属性,可以使用watch绑定一个方法,以后只要这个属性发生变化,就会触发方法的执行 |
| |
| |
| |
| -slot |
| -匿名插槽 |
| -具名插槽 |
| |
| |
| |
| -component---》is='字符串' |
| |
| |
| -做缓存,保证组件不被销毁 |
| |
| |
| |
| |
| |
| |
| - el(template) |
| - data :组建中 方法 |
| - methods |
| - 8个生命周期钩子 |
| - components |
| - watch |
| - computed |
| |
今日内容
1 vue-cli创建项目
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| -一路下一步 |
| -环境变量:可执行文件路径 就在环境变量 |
| -两个可执行文件: |
| -node: python |
| -npm: pip |
| |
| |
| -js只能运行在浏览器中,因为浏览器中有它的解释器环境 |
| -基于谷歌浏览器的v8引擎,使它可以运行在操作系统之上 网络包,文件,数据库。。。 用c写的 |
| -js语法 完成后端的编写,全栈 |
| -号称性能高,大量使用协程 |
| |
| |
| -把文件生成md5值 |
| -以后被下载下来,再生成md5值肯定是一样,如果不一样说明被篡改了,不能用了 |
| |
| -1 百度网盘 |
| -秒传 |
| -传到服务器上---》生成md5---》存着 |
| -本地生成md5---》发送到服务端---》一查----》有---》不传了 |
| |
| - 屏蔽 |
| |
| |
| -2 王小云 破解md5 |
| |
| |
| |
| |
| |
| -js,node,php,python 解释型语言 运行解释器之上 pyinstaller |
| -c,go,c++ 编译型语言 直接把源代码编译成不同平台的可执行文件 |
| -cpython解释器用c写的----》编译成不同平台的可执行文件---》在不同平台双击运行即可 |
| -win |
| -mac |
| -linux |
| -java:一处编码处处运行 |
| -java 虚拟机 ---》虚拟机跨平台 |
| -java字节码文件运行在虚拟机之上 |
| -java写了代码----》编译成字节(区别与可执行文件 jar,war,.class) |
| |
| |
| -2.x 使用vue-cli :https://cli.vuejs.org/zh/ |
| -3.x 使用vue-cli |
| -vite只能创建vue3 效率非常高 |
| |
| |
| |
| npm install -g @vue/cli |
| |
| |
| |
| npm install -g cnpm --registry=https://registry.npm.taobao.org |
| |
| |
| |
| cnpm install -g @vue/cli |
| |
| |
| -vue 创建vue项目 |
| |
| |
| vue create myfirstvue |
| |
| -从github拉一个空项目 |
| -按照该项目所有的依赖,npm装 |
| |
| |
| |
| vue ui |




2 vue项目目录介绍
| |
| -在命令行中执行(注意路径) |
| -npm run serve |
| -使用 pycharm ,点击绿色箭头执行 |

| |
| myfirstvue |
| node_modules |
| |
| public |
| -favicon.ico |
| -index.html |
| |
| src |
| -assets |
| logo.png |
| -components |
| HelloWorld.vue |
| -router |
| index.js |
| -store |
| -index.js |
| -views |
| -AboutView.vue |
| -HomeView.vue |
| -App.vue |
| -main.js |
| |
| .gitignore |
| babel.config.js |
| jsconfig.json |
| package.json |
| package-lock.json |
| README.md |
| vue.config.js |
3 es6导入导出语法
3.1 App.vue,main.js,About.vue写了什么
| |
| |
| |
| 1 新建xx.vue |
| 2 在xx.vue中就三块内容 |
| |
| <template> |
| </template> |
| |
| |
| <style> |
| </style> |
| |
| |
| <script> |
| </script> |
| |
| |
| |
| |
| |
| |
| new Vue({ |
| render: h => h(App) |
| }).$mount('#app') |
| |
| |
| |
| |
3.2 导入导出语法
| |
| |
| |
| |
| -导出语法 |
| export default 一般是个对象 |
| -导入语法 |
| import 别名 from '路径' |
| 以后 别名 就是 导出的对象 |
| |
| |
| |
| |
| -导出语法 可以导出多个 |
| export const name = '彭于晏' |
| export const add = (a, b) => { |
| console.log(name) |
| return a + b |
| } |
| export const age = 19 |
| |
| -导入语法 |
| import {name, add} from './lqz/s1' |
| console.log(name) |
| console.log(add(33, 44)) |
| |
| |
| |
| |
| |
| -包下的 index.js 导入的时候,不用写到index.js的路径 --->它等同于ptyhon的__init__.py |
| -例如: |
| |
| lqz |
| -index.js |
| |
| import lqz from './lqz' |
| |
| |
3.2 vue项目编写步骤
| |
| -页面组件 |
| -小组件 给页面组件用的 |
| |
| |
| export default { |
| name: 'HelloWorld', |
| data() { |
| return { |
| xx: '彭于晏' |
| } |
| }, |
| } |
| |
| |
| |
| import HelloWorld from '../components/HelloWorld.vue' |
| |
| export default { |
| components: { |
| HelloWorld |
| } |
| } |
| |
| |
| <HelloWorld msg="传进来的p"/> |
| |
4 小练习-登录功能
4.1 App.vue 动了
| <template> |
| <div id="app"> |
| <router-view/> |
| </div> |
| </template> |
4.2 main.js
| |
| import Vue from 'vue' |
| import App from './App.vue' |
| import router from './router' |
| import store from './store' |
| Vue.config.productionTip = false |
| new Vue({ |
| router, |
| store, |
| render: h => h(App) |
| }).$mount('#app') |
| |
4.3 访问根路径
| |
| -HomeView使用了Helloworld.vue |
| -自定义属性 |
| |
4.4 使用axios
| 1 按装 |
| cnpm install axios -S |
| 2 导入(按照的第三方模块,直接导入) |
| import axios from 'axios' |
| |
| 3 使用 |
| handleClick() { |
| console.log(this.username, this.password) |
| axios.post('http://127.0.0.1:8000/login/', {username: this.username, password: this.password}).then(res => { |
| // console.log(res) |
| alert(res.data.msg) |
| }) |
| |
| } |
4.5 解决跨域
| 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' |
| ) |
5 scoped
| |
| |
| <style scoped> |
| h1 { |
| background-color: chartreuse; |
| } |
| </style> |
作业
| 1 创建出vue项目 |
| 2 使用导入导出语法,把 登录功能的发送请求,抽取到 一个包中 ,把登录功能写完 |
| -导入导出 |
| -默认导出 |
| -命名导出 |
| |
| 4 创建一个组件,显示一张图片,图片地址通过父组件传入 |
| 在HomeView中使用这个组件 |
| |
| |
| 5 在图片页组件,加一个button,点击把图片地址显示在父组件中 (子传父) |
| |
| 6 使用插槽,随便定制一个图片样子 |
| |
| |
| ---------- |
| 7 使用vue项目把查询所有汽车 v-for循环显示出来 |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构