【前端发展历史】 

# 1 HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 -> 在浏览器中查看

# 2 Ajax的出现 -> 后台发送异步请求,Render+Ajax混合 jquery 封装的ajax 方法 $.ajax() 原生js--》发送ajax请求--》比较复杂--》 其它第三放模块:发送ajax请求

# 3 单用Ajax(加载数据,DOM渲染页面):前后端分离的雏形

# 4 Angular框架的出现(1个JS框架):出现了“前端工程化”的概念(前端也是1个工程、1个项目)

# 5 React、Vue框架:当下最火的2个前端框架(Vue:国人喜欢用,React:外国人喜欢用)

# 6 移动开发(Android+IOS) + Web(Web+微信小程序+支付宝小程序) + 桌面开发(Windows桌面):前端 -> 大前端

# 7 一套代码在各个平台运行(大前端):谷歌Flutter(Dart语言:和Java很像)可以运行在IOS、Android、PC端

# 8 在Vue框架的基础性上 uni-app:一套编码 编到10个平台

# 9 在不久的将来 ,前端框架可能会一统天下

## 补充: -1 把谷歌浏览器的v8引擎---》用c重写了--》能运行再操作系统上---》nodejs

     -2 javascript和Ecmascript -ECMAScript :规范---》新语法--》es5,es6,es13。。。 -js=ECMAScript+bom+dom

     -3 微软--》typescript---》 -开发vue:使用ts语法---》编译成js -css:less,sass

 

【vue介绍】 

  vue官网: https://cn.vuejs.org/   看vue2的文档---起步按钮里有一些简单介绍

  # Vue 是一套用于构建用户界面的渐进式框架

  # Vue js的框架

    M-V-VM 架构思想 MVC MTV MVVC MVP移动端架构

       -M:vue对象的data属性里面的数据,这里的数据要显示到页面中 js变了

      -V:vue中数据要显示的HTML页面,在vue中,也称之为“视图模板” (HTML+CSS)

        -VM:vue中编写代码时的vm对象,它是vue.js的核心,负责连接 View 和 Model数据的中转,保证视图和数据的一致性,所以前面代码中,data里面的数据被显示中p标签中就是vm对象自动完成的(响应式:JS中变量变了,HTML中数据也跟着改变)

vue做出来的介于数据层和视图层之间的一层,以后不需要手动进行dom操作了

# 组件化开发、单页面开发 -组件化开发,以后都是写出一个个组件,组件的组合成页面 -单页面开发(单页面应用):spa:single-page application,一个HTML页面

 

 =====================================================================

# 版本 vue2:少一点 :https://v2.cn.vuejs.org/v2/guide/

   vue3:多一点点:https://cn.vuejs.org/guide/introduction.html

  # 选项式 API 和组合式 API -vue2是选项式 API,-vue3两个都支持:推荐使用组合式api

补充:组件化开发-(Single-Page application,缩写为 SPA)

 

【引入vue】

 

前端开发---》IDE集成开发工具
    -python---》pycharm
    -前端:vue,react---》vscode,webstorm
        -webstorm 是jetbrains全家桶,用起来跟pycharm一样
        -建议大家用webstorm
        -我们用pycharm,因为pychrm就是webstorm
vue 语法提示
	-装个插件:vue,在settings里面下载vue.js

引入方式
CDN的方式引入
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>


下载后导入
其实就是直接在浏览器上打开  这是2.7.16版本的链接
https://cdn.jsdelivr.net/npm/vue/dist/vue.js  然后复制下来,
创个vue的js文件,把代码粘贴进去,再创建一个js文件夹,
把vue文件拖进去就行了
<script src="js/vue.js"></script>
---------------------------------------------
vue3下载引入
https://unpkg.com/vue@3/dist/vue.global.js

补充
解释型的语言是需要解释器的

js就是一门解释型语言,只不过js解释器被集成到了浏览器中

所以,在浏览器的Console中输入命令,就和cmd中输入python后,进入交互式环境一样

解释器里面下个Vue.js 的插件,重启一下,会有自动提示
 

 。

 【响应式--》数据变,页面变数据变】

(数据没变之前)

 (数据变之后)

 原因:-VM这一层

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

演示有输入框,看页面是否会随着输入框内的内容变化而变化

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <!--    它会从CDN加载Vue.js的最新版本-->
 7     <!--    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>-->
 8     <script src="./vue/vue2.js"></script>
 9 </head>
10 <body>
11 <div class="app">{{s}}
12     <!--{{s}}是一个Vue.js的模板语法,它表示这里会被data对象中的s属性的值替换。-->
13     <br>
14     <input type="text" v-model="username">
15 </div>
16 
17 
18 </body>
19 
20 <!--引入一个vue的实例-->
21 <!--创建了一个新的Vue实例,并将其赋值给变量vm。-->
22 <!--el: '.app' 表示这个Vue实例会接管所有类名为app的元素。-->
23 <!--data: { s: 'hello world' } 定义了实例的数据对象。这里有一个属性s,其值为'hello world'-->
24 <script>
25     var vm = new Vue({
26         el: '.app',
27         data: {
28             s: 'hello world',
29             username: '小龙女'
30         }
31     })
32 </script>
33 </html>

 

【模板语法】之(插值语法)

1 再被vue管理的标签中

2 插值语法使用 {{}}-->必须是定义再data中的数据

3 放:字符串,数字,对象,数组,函数执行,修改变量值,三目运算符。。 -不能定义变量 -不能渲染标签

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 7 </head>
 8 <body>
 9 <div id="app">
10     <h1>字符串:{{username}}</h1>
11     <h1>数字:{{age}}</h1>
12     <h1>对象:{{userinfo}}---------取值:{{userinfo.name}}</h1>
13     <h1>数组:{{hobby}}----------取值:{{hobby[0]}}</h1>
14     <h1>运算:{{11 + 22}}----变量运算{{age + userinfo.age}}</h1>
15     <h1>三目运算符:{{1 < 2 ? '真' : '假'}}</h1>
16     <h1>字符串里面放了标签:{{a}}</h1>
17     <a href="http://www.baidu.com">看猪猪侠</a>
18 
19 </div>
20 </body>
21 
22 <script>
23     var vm = new Vue({
24         el: '#app',
25         data: {
26             username: '小龙女',
27             age: 18,
28             userinfo: {name: '杨过', age: 38},
29             hobby: ['吃饭', '睡觉', '打游戏'],
30             // 字符串里面放链接
31             a: '<a href="http://www.baidu.com">看猪猪侠</a>'
32         }
33     })
34 </script>
35 </html>
插值语法

 

 【指令】

  (文本指令)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <!--    或是:https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js-->
 7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 8 </head>
 9 <body>
10 <div id="app">
11     <p v-text="username"></p>
12     <!--    只是文本-->
13     <p v-text="a"></p>
14     <!--    可以渲染标签,变成链接形式-->
15     <p v-html="a"></p>
16     <hr>
17     <img v-if="showUp" src="http://pic.imeitou.com/uploads/allimg/231004/8-231004150041-50-lp.jpg" alt="">
18     <hr>
19     <div v-show="showDown">
20         <img src="http://pic.imeitou.com/uploads/allimg/240424/10-240424161142-50-lp.jpg" alt="">
21     </div>
22 
23 </div>
24 </body>
25 
26 <script>
27     var vm = new Vue({
28         el: '#app',
29         data: {
30             username: '小龙女',
31             a: '<a href="http://www.baidu.com">百度一下</a>',
32             showUp: true,
33             showDown: false,
34 
35         }
36     })
37 </script>
38 </html>
================================================================================================
# 1 再vue中 以 v-xx  开头的都是vue的指令系统
# 2 vue有很多指令,不同的指令作用不同
	v-for :循环
    v-if  :判断
    v-text:显示文本
    
# 3 指令都放在标签上


# 4 文本指令
    v-html	让HTML渲染成页面
    v-text	标签内容显示js变量对应的值
    v-show	放1个布尔值:为真 标签就显示;为假 标签就不显示  隐藏标签:dispaly:none
    v-if	放1个布尔值:为真 标签就显示;为假 标签就不显示  删标签,性能更低
 

 

 

 。

  (事件指令)

# 1 点击事件,双击事件,拖动事件,得到焦点,失去焦点。。。。

# 2 v-on:click='函数'
    -v-on:click="handleClick"
    
#3 简写成
    @click="handleClick"

 

 案例

  点击按钮显示图片,再点击就不显示

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <!--    或是:https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js-->
 7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 8 </head>
 9 <body>
10 <div id="app">
17     <img v-if="showUp" src="http://pic.imeitou.com/uploads/allimg/231004/8-231004150041-50-lp.jpg" alt="">
18     <hr>
19     <div v-show="showDown">
20         <img src="http://pic.imeitou.com/uploads/allimg/240424/10-240424161142-50-lp.jpg" alt="">
21     </div>
22 
23     <hr>
24     <button @click="toggleImage">切换图片</button>
25     <img v-if="showUp" src="http://pic.imeitou.com/uploads/allimg/240424/10-240424161142-50-lp.jpg" alt="">
26 </div>
27 </body>
28 
29 <script>
30     var vm = new Vue({
31         el: '#app',
32         data: {35             showUp: true,
36             showDown: false,
37 
38         },
39         methods:{
40             toggleImage(){
41                 this.showUp = !this.showUp
42             }
43         }
44     })
45 </script>
46 </html>
-----------------------------------------------------------------------------

案例二:

使用vue,点击按钮,每隔1s换一张图片,点停止,就不换了

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 7 </head>
 8 <body>
 9 
10 <div id="app">
11     <img :src="url" alt="">
12     <hr>
13     <button @click="handleChange">点击切换美女</button>
14     <button @click="handleChoose">点击开始选美女</button>
15 
16 </div>
17 
18 </body>
19 
20 <script>
21     let vm = new Vue({
22         el: '#app',
23         data: {
24             url: "https://ts2.cn.mm.bing.net/th?id=OIP-C.54qlbLNAZ64K94c_DCT-qAAAAA&w=166&h=166&c=8&rs=1&qlt=90&o=6&dpr=1.3&pid=3.1&rm=2",
25             t: null
26         },
27         methods: {
28             handleChange() {
29                 this.url = 'https://wx4.sinaimg.cn/mw690/006Bdvtlgy1hp23p5qgz8j32ns3zk7wl.jpg'
30             },
31             handleChoose() {
32 
33                 if (this.t != null) {
34                     // 停止定时器
35                     clearInterval(this.t)
36                     this.t = null
37 
38                 } else {
39                     // 启动定时器
40                     // 1 使用定时器--
41                     var url_list = [
42                         'https://ts4.cn.mm.bing.net/th?id=OIP-C.CDDvqeExs6deIR-XPZlftQAAAA&w=250&h=250&c=8&rs=1&qlt=90&o=6&dpr=1.3&pid=3.1&rm=2',
43                         'https://tse4-mm.cn.bing.net/th/id/OIP-C.O9WCHPpdalnlt5xjEkBaugAAAA?w=193&h=194&c=7&r=0&o=5&dpr=1.3&pid=1.7',
44                         'https://tse3-mm.cn.bing.net/th/id/OIP-C.cwC0XuDnHlZqbapiAKQAfwAAAA?w=180&h=196&c=7&r=0&o=5&dpr=1.3&pid=1.7',
45                         'https://tse3-mm.cn.bing.net/th/id/OIP-C.ajzrjhxMXSZjfWxSKSbPFwAAAA?w=165&h=201&c=7&r=0&o=5&dpr=1.3&pid=1.7',
46                         'https://tse1-mm.cn.bing.net/th/id/OIP-C.tmop7GowixFp5Rct2tsjsQAAAA?w=195&h=195&c=7&r=0&o=5&dpr=1.3&pid=1.7',
47                     ]
48                     console.log('函数外:', this)
49                     var _this = this
50                     var count = 0
51                     this.t = setInterval(function () {
52                         if (count > 3) {
53                             count = 0
54                         }
55                         console.log('函数内:', this)
56                         _this.url = url_list[count]
57                         count += 1
58                     }, 1000)
59 
60                 }
61 
62 
63             }
64         }
65 
66     })
67 </script>
68 </html>
View Code

 。

-----------------------------------------------------------------------------------------------------------

补充 es 6 的对象写法

 1     var hobby = ['篮球', '足球']
 2     var d={'name':"lqz",age:19,'hobby':hobby}  // 正常写法
 3     var d={'name':"lqz",age:19,hobby:hobby}   // 正常写法
 4     var d = {'name': "lqz", age: 19, hobby}   // es6 的简写形式
 5 
 6     var f = function (a, b) {
 7         console.log('匿名函数')
 8         console.log(a + b)    }
 9 
10     var d = {'name': "lqz", age: 19, f:f}  // 正常写法
11     var d = {'name': "lqz", age: 19, f}   // es6 的简写形式
12 
13     var d = {'name': "lqz", age: 19, handleClick(){
14           console.log('xxxxx')}}         // es6 的简写形式
15 
16     console.log(d)
17     d.f()     // 就会执行匿名
18 
19     d.handleClick()   // 就会执行匿名函数

 

 

posted on 2024-04-24 16:31  认真的六六  阅读(6)  评论(0编辑  收藏  举报