• JSD-2204-JavaScript-Vue-Day05


    1.JavaScript

    1.1window对象中常用的属性

    • location:位置
    • location.href; 获取或修改浏览器的请求地址
    • location.reload(); 刷新
    • history:历史
    • history.length; 得到历史页面数量
    • history.back() 返回上一页面
    • history.forward() 前往下一页面

    1.2DOM文档对象模型

    • 包含和页面相关内容
    1. 通过选择器选择页面中的元素对象let 元素对象 = document.querySelector("选择器");
    2. 获取或修改元素的文本内容 <标签名>文本内容</标签名>元素对象.innerText; //获取元素象.innerText = "xxxx"; //修改
    3. 获取或修改控件的值元素对象.value; //获取元素对象.value = "xxxx"; //修改
    4. 创建元素对象let 变量 = document.createElement("标签名");
    5. 把元素对象添加到某个元素里面父元素.append(新元素);
    6. 获取body元素对象的方式document.body
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <input type="text">
    9. <input type="button" value="哥哥" onclick="f(1)">
    10. <input type="button" value="妹妹" onclick="f(2)">
    11. </body>
    12. <script type="text/javascript">
    13. function f(num){
    14. let count = document.querySelector("input").value;
    15. for (let b = 0 ; b < count ;b++) {
    16. let i = document.createElement("img");
    17. i.src = num==1?"a.png":"q.jpg";
    18. document.body.append(i);
    19. }
    20. }
    21. </script>
    22. </html>

    1.2.1员工列表练习

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>员工列表练习</title>
    6. </head>
    7. <body>
    8. <input type="text" id="i1" placeholder="员工姓名">
    9. <input type="text" id="i2" placeholder="工资">
    10. <input type="text" id="i3" placeholder="工作">
    11. <input type="button" value="添加" onclick="f()">
    12. <table border="1">
    13. <caption>员工列表</caption>
    14. <tr>
    15. <th>姓名</th>
    16. <th>工资</th>
    17. <th>工作</th>
    18. </tr>
    19. </table>
    20. </body>
    21. <script type="text/javascript">
    22. function f(){
    23. //创建tr和td
    24. let tr = document.createElement("tr");
    25. let nameTd = document.createElement("td");
    26. let moneyTd = document.createElement("td");
    27. let pathTd = document.createElement("td");
    28. //将获取到的文本框的内容添加到td里面
    29. nameTd.innerText = i1.value;
    30. moneyTd.innerText = i2.value;
    31. pathTd.innerText = i3.value;
    32. //把td装进tr
    33. tr.append(nameTd,moneyTd,pathTd);
    34. //先得到table,然后把tr装进table
    35. let table = document.querySelector("table");
    36. table.append(tr);
    37. }
    38. </script>
    39. </html>

    1.2.2自定义对象练习

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. </body>
    9. <script type="text/javascript">
    10. //创建一个员工对象
    11. let emp = {
    12. name:"张三",
    13. salay:5000,
    14. job:"销售"
    15. };
    16. console.log(emp.name)
    17. console.log(emp.salay)
    18. console.log(emp.job)
    19. //封装几个商品的信息
    20. let arr = [
    21. {title:"苹果手机",price:3000,num:50},
    22. {title:"小米手机",price:5000,num:150},
    23. {title:"华为手机",price:8000,num:500}
    24. ]
    25. for (let s of arr) {
    26. let p = document.createElement("p");
    27. p.innerText = "商品名称:"+s.title+" 价格:"+s.price+" 库存:"+s.num;
    28. document.body.append(p);
    29. }
    30. </script>
    31. </html>

    1.2.3个人详情练习

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <table border="1">
    9. <tr>
    10. <td>照片:</td>
    11. <td><img src="" alt="" width="100"></td>
    12. </tr>
    13. <tr>
    14. <td>姓名:</td>
    15. <td id="name_td"></td>
    16. </tr>
    17. <tr>
    18. <td>年龄:</td>
    19. <td id="age_td"></td>
    20. </tr>
    21. <tr>
    22. <td>好友</td>
    23. <td>
    24. <ul id="friend_ul"></ul>
    25. </td>
    26. </tr>
    27. </table>
    28. <input type="button" value="请求数据" onclick="f()">
    29. </body>
    30. <script type="text/javascript">
    31. function f(){
    32. let user = {
    33. img:"q.jpg",
    34. name:"坂田银时",
    35. age:25,
    36. friends:["冲田总司","眼睛男","神乐","蛋黄酱王子"]
    37. }
    38. let img_td = document.querySelector("img");
    39. img_td.src = user.img;
    40. name_td.innerText = user.name;
    41. age_td.innerText = user.age;
    42. //遍历好友数组
    43. for (let name of user.friends) {
    44. let li = document.createElement("li");
    45. li.innerText = name;
    46. friend_ul.append(li);
    47. }
    48. }
    49. </script>
    50. </html>

    1.3前端MVC设计模式

    • MVC设计模式就是将实现一个前端业务的代码划分了三部分.
    • M: Model 模型, 指数据模型 前端的数据一般都来自于服务器
    • V: View 视图, 指页面相关代码
    • C: Controller 控制器, 指将数据展示到页面中的过程代码
    • 前端MVC设计模式存在的弊端: 在Controller控制器部分的代码需要频繁的进行DOM操作(遍历查找页面元素的过程), 会导致执行效率降低, MVVM设计模式可以解决此问题.

    1.4前端MVVM设计模式

    • M: Model 模型, 指数据模型 前端的数据一般都来自于服务器
    • V: View 视图, 指页面相关代码
    • VM: ViewModel 视图模型, 负责将页面中可能发生改变的元素和数据进行绑定,并且会一直监听数据的改变,当数据发生改变时从内存中找到和数据对应的元素 然后再进行改动,避免了频繁DOM操作带来的资源浪费,从而提高了执行效率

    2.VUE

    • 目前最流行的前端框架, 此框架基于MVVM设计模式.
    • 在第三阶段所涉及到的VUE是通过在html页面中引入vue.js的方式去使用此框架, 第四个阶段会接触脚手架方式
    • 在html页面中引入vue.js文件, 此文件可以通过CDN服务器引入到自己的页面中, 也可以将CDN服务器的js文件下载到本地再引入

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <div>
    9. <h1>{{info}}</h1>
    10. </div>
    11. </body>
    12. <script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    13. <script type="text/javascript">
    14. let v = new Vue({
    15. el:"body>div",//设置vue框架管理的元素
    16. data:{//声明和页面元素进行绑定的数据
    17. info:"helloVue"
    18. }
    19. })
    20. </script>
    21. </html>

    2.1VUE相关指令

    1. {{变量}}: 插值, 让此处的文本内容和变量进行绑定
    2. v-text: 让某个元素的文本内容和变量进行绑定
    3. v-html: 让某个元素的文本或标签内容和变量进行绑定
    4. v-bind:属性名=变量, 让元素的某个属性的值和变量进行绑定 , v-bind可以省略
    5. v-model=变量, 双向绑定: 变量会影响页面, 页面也会影响变量
    6. v-on:事件名="方法", 事件绑定, 事件触发的方法需要写在methods里面, 简写: @事件名="方法"
    7. v-for="变量 in 数组"; 循环遍历, 遍历的过程中会生成当前元素以及子元素.

    2.1.1文本相关指令

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <div>
    9. <!-- 插值指令:让此处的文本内容和变量进行绑定 -->
    10. <b>{{info}}</b>
    11. <h2>{{info}}</h2>
    12. <!-- v-text:让元素的文本内容和变量进行绑定 -->
    13. <h2 v-text="info"></h2>
    14. <p v-text="info"></p>
    15. <!-- v-html:让元素的标签或文本内容和变量进行绑定 -->
    16. <p v-html="info"></p>
    17. </div>
    18. <!-- 引入vue框架文件 -->
    19. <script src="vue.min.js"></script>
    20. </body>
    21. <script type="text/javascript">
    22. let v = new Vue({
    23. el:"body>div",
    24. data:{
    25. info:"测试<b>本地</b>引入"
    26. }
    27. })
    28. </script>
    29. </html>

    2.1.2属性绑定

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <div>
    9. <!-- 属性绑定的简写 -->
    10. <a :href="url">超链接</a>
    11. <!-- 这个是属性绑定的复杂写法,这种写法如果没有安装vue插件会报错 alt+回车解决 -->
    12. <a v-bind:href="url">超链接</a>
    13. <!-- 图片显示 -->
    14. <img :src="imgName" alt="">
    15. <!-- 文本框 -->
    16. <input type="text" :value="info">
    17. </div>
    18. <script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    19. <script type="text/javascript">
    20. let v = new Vue({
    21. el:"body>div",
    22. data:{
    23. url:"http://www.baidu.com",
    24. imgName:"a.png",
    25. info:"这是文本"
    26. }
    27. })
    28. </script>
    29. </body>
    30. </html>

    2.1.3双向绑定

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <div>
    9. <!-- v-model双向绑定,变量会影响页面的改变,页面也会影响变量 -->
    10. <input type="text" v-model="msg">
    11. {{msg}}
    12. <h1>注册页面</h1>
    13. 用户名:<input type="text" placeholder="请输入用户名" v-model="user.username"><br>
    14. 密码:<input type="password" placeholder="请输入密码" v-model="user.password">
    15. </div>
    16. <script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    17. <script type="text/javascript">
    18. let v = new Vue({
    19. el:"body>div",
    20. data:{
    21. msg:"双向绑定测试",
    22. user:{
    23. username:"",
    24. password:""
    25. }
    26. }
    27. })
    28. </script>
    29. </body>
    30. </html>

    2.1.4事件绑定

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <div>
    9. <input type="text" v-model="ind">
    10. <!-- 事件绑定简写 -->
    11. <input type="button" value="事件绑定" @click="f()">
    12. <!-- 事件绑定复杂写法 -->
    13. <input type="button" value="事件绑定" v-on:click="f()">
    14. </div>
    15. </body>
    16. <script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    17. <script type="text/javascript">
    18. let v = new Vue({
    19. el:"body>div",
    20. data:{
    21. ind:""
    22. },
    23. methods:{
    24. f(){
    25. alert(v.ind)
    26. }
    27. }
    28. })
    29. </script>
    30. </html>

    2.1.5猜数字Vue版本

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <div>
    9. <input type="text" placeholder="请输入1-100之间的整数" v-model="num">
    10. <input type="button" value="猜一猜" @click="f()">
    11. <div>{{info}}</div>
    12. </div>
    13. </body>
    14. <script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    15. <script type="text/javascript">
    16. let v = new Vue({
    17. el:"body>div",
    18. data:{
    19. number:parseInt(Math.random()*100)+1,
    20. num:0,
    21. info:"",
    22. count:0
    23. },
    24. methods:{
    25. f(){
    26. console.log(v.number);
    27. v.count++;
    28. if(isNaN(v.num)){
    29. v.info = "数据类型不匹配";
    30. return;
    31. }
    32. if(v.num==v.number){
    33. v.info = "猜对了一共猜了"+v.count+"次";
    34. }else if(v.num>v.number){
    35. v.info = "猜大了";
    36. }else{
    37. v.info = "猜小了";
    38. }
    39. }
    40. }
    41. })
    42. </script>
    43. </html>

    2.1.6计算器Vue版本

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <div>
    9. <input type="text" v-model="num1">
    10. <input type="text" v-model="num2">
    11. <input type="button" value="加" @click="f(1)">
    12. <input type="button" value="减" @click="f(2)">
    13. <input type="button" value="乘" @click="f(3)">
    14. <input type="button" value="除" @click="f(4)">
    15. <div>{{info}}</div>
    16. </div>
    17. </body>
    18. <script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    19. <script type="text/javascript">
    20. let v = new Vue({
    21. el:"body>div",
    22. data:{
    23. num1:0,
    24. num2:0,
    25. info:""
    26. },
    27. methods:{
    28. f(index){
    29. if(isNaN(v.num1)||isNaN(v.num2)){
    30. v.info = "输入的数据类型有误";
    31. return;
    32. }
    33. switch(index){
    34. case 1:
    35. v.info = v.num1*1+v.num2*1;
    36. break;
    37. case 2:
    38. v.info = v.num1-v.num2;
    39. break;
    40. case 3:
    41. v.info = v.num1*v.num2;
    42. break;
    43. case 4:
    44. v.info = v.num1/v.num2;
    45. break;
    46. }
    47. }
    48. }
    49. })
    50. </script>
    51. </html>

    2.1.7计算器Vue进阶版本

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <div>
    9. <input type="text" v-model="num1">
    10. <input type="text" v-model="num2">
    11. <input type="button" value="加" @click="f('+')">
    12. <input type="button" value="减" @click="f('-')">
    13. <input type="button" value="乘" @click="f('*')">
    14. <input type="button" value="除" @click="f('/')">
    15. <div>{{info}}</div>
    16. </div>
    17. </body>
    18. <script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    19. <script type="text/javascript">
    20. let v = new Vue({
    21. el:"body>div",
    22. data:{
    23. num1:0,
    24. num2:0,
    25. info:""
    26. },
    27. methods:{
    28. f(index){
    29. if(isNaN(v.num1)||isNaN(v.num2)){
    30. v.info = "输入的数据类型有误";
    31. return;
    32. }
    33. /* eval()此方法可以将字符串以js代码的形式执行 */
    34. v.info = eval(v.num1+index+v.num2);
    35. }
    36. }
    37. })
    38. </script>
    39. </html>

    2.1.8循环遍历
     

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <div>
    9. <ul>
    10. <!-- v-for循环遍历,遍历的过程中会生成当前元素 -->
    11. <li v-for="name in arr">{{name}}</li>
    12. </ul>
    13. <table border="1">
    14. <caption>角色榜</caption>
    15. <tr>
    16. <th>名字</th>
    17. <th>昵称</th>
    18. <th>资金</th>
    19. </tr>
    20. <tr v-for="hero in heros">
    21. <td>{{hero.name}}</td>
    22. <td>{{hero.type}}</td>
    23. <td>{{hero.money}}</td>
    24. </tr>
    25. </table>
    26. </div>
    27. </body>
    28. <script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    29. <script type="text/javascript">
    30. let v = new Vue({
    31. el:"body>div",
    32. data:{
    33. arr:["坂田银时","上条当麻","神乐","蛋黄酱王子"],
    34. heros:[
    35. {name:"坂田银时",type:"白夜叉",money:1},
    36. {name:"上条当麻",type:"神之右手",money:5000},
    37. {name:"排村剑心",type:"排村拔刀斋",money:400}
    38. ]
    39. }
    40. })
    41. </script>
    42. </html>

    2.2idea中添加自定义模板代码

     

     

  • 相关阅读:
    doris---Rollup
    驱动开发:内核物理内存寻址读写
    游戏企业该如何做好网络安全防护?
    云原生游戏第 2 讲:OpenKruiseGame 设计理念详解
    pycharm连接MySql数据库,新建表creat table、删除表drop table、查询表select、插入数据insert
    第八章 强制类型转换
    JSP:Tag文件的使用
    react基础教程学习(一)
    P4727 [HNOI2009] 图的同构计数
    游戏动画技术简介
  • 原文地址:https://blog.csdn.net/TheNewSystrm/article/details/125564394