经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
vue基本操作[上] 续更----让世界感知你的存在
来源:cnblogs  作者:二价亚铁  时间:2023/7/19 9:23:55  对本文有异议

Vue引用js文件的多种方式

1.vue-cli webpack全局引入jquery

(1)首先 npm install jquery --save (--save 的意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。)

(2)在webpack.base.conf.js里加入
"""

  1. var webpack = require("webpack")

"""
(3)在module.exports的最后加入
"""

  1. plugins: [
  2. new webpack.optimize.CommonsChunkPlugin('common.js'),
  3. new webpack.ProvidePlugin({
  4. jQuery: "jquery",
  5. $: "jquery"
  6. })
  7. ]

"""
(4) 在main.js 引入就ok了
"""

  1. import $ from 'jquery'

"""
(5)然后 npm run dev 就可以在页面中直接用$ 了.

2.vue组件引用外部js的方法

项目结构如图:
image



content组件代码:
"""

  1. <template>
  2. <div>
  3. <input ref='test' id="test">
  4. <button @click='diyfun'>Click</button>
  5. </div>
  6. </template>
  7. <script>
  8. import {myfun} from '../js/test.js' //注意路径
  9. export default {
  10. data () {
  11. return {
  12. testvalue: ''
  13. }
  14. },
  15. methods:{
  16. diyfun:function(){
  17. myfun();
  18. }
  19. }
  20. }
  21. </script>

"""


test.js代码:

"""

  1. function myfun() {
  2. console.log('Success')
  3. }
  4. export { //很关键
  5. myfun
  6. }

"""


用到了es6的语法。

3.单vue页面引用内部js方法

(1) 首先 npm install jquery --save (--save 的意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。)

(2) 在需要引用的vue页面import引入$,然后使用即可

image



这个图中有黄色的警告,如果把console.log($)改成这样:
"""

  1. export default{
  2. mounted: function(){
  3. console.log($)
  4. }
  5. }

"""



Vue数组操作

vue中数组的操作总结:

根据索引设置元素:

1.调用$set方法:

  1. this.arr.$set(index, val);

2.调用splice方法:

  1. this.arr.splice(index, 1, val);

合并数组:

  1. this.arr = this.arr.concat(anotherArr);

清空数组:

  1. this.arr = [];

主要的数组方法:

1.变异方法(修改了原始数组),vue为触发视图更新,包装了以下变异方法:

  1. push()
  2. pop()
  3. shift()
  4. unshift()
  5. splice() //无论何时,使用该方法删除元素时注意数组长度有变化,bug可能就是因为她
  6. sort()
  7. reverse()

2.非变异方法(不会修改原始数组而是返回一个新数组),如concat()、filter(),使用时直接用新数组替换旧数组,如上面的合并数组例子。

注意:

  1. //以下操作均无法触发视图更新
  2. this.arr[index] = val;
  3. this.arr.length = 2;





Vue属性绑定指令 -- v-bind

可简写为 :

普通属性:页面可解析为id=“4”
"""

  1. <p v-bind:id="2*2">{{msg}}</p>

"""


class属性绑定
"""

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
  9. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  10. </head>
  11. <style>
  12. .red {
  13. background: red;
  14. }
  15. .big {
  16. font-size: 4em;
  17. }
  18. </style>
  19. <body>
  20. <div id="app">
  21. <p class='red'>这是一个p段落标签...</p>
  22. <!--绑定red属性 -->
  23. <p v-bind:class='redColor'>这是一个p段落标签...</p>
  24. <!-- 当点击时,属性值切换 -->
  25. <p @click="flag=!flag" :class='{red:flag}'>这是一个p段落标签...</p>
  26. <!-- 绑定big和red属性 -->
  27. <p class='big' :class="{'red':true}">这是一个p标签..</p>
  28. <!-- 以数组形式绑定big和red属性 -->
  29. <p :class="['big','red']">这是一个p标签..</p>
  30. <!-- 绑定big,判断flag的值是否为true,为true时绑定red属性 -->
  31. <p :class="['big',(flag?'red':'')]">这是一个p标签..</p>
  32. <!-- 绑定big,判断flag的值是否为true,为true时绑定red属性 -->
  33. <p class='big' :class='flag?"red":""'>这是一个p标签..</p>
  34. <!-- 行内样式绑定 -->
  35. <p :style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</p>
  36. </div>
  37. <script>
  38. var vm = new Vue({
  39. el:"#app",
  40. data:{
  41. redColor:'red',
  42. flag:true,
  43. activeColor: 'green',
  44. fontSize: 30
  45. }
  46. })
  47. </script>
  48. </body>
  49. </html>

"""



Vue事件绑定

1.原生事件和组件事件的绑定

原生事件的绑定是通过addEventLister绑定给真实的元素的;组件事件绑定是通过vue自定义的$on实现的。如果要在组件上使用原生事件,需要加.native修饰符,这样就相当于在父组件中把子组件当做普通html标签,然后加上原生事件。

2.\(on和\)emit的实现

\(on、\)emit是基于订阅观察者模式的,维护一个事件中心,on的时候将事件按名称存在事件中心里,称之为订阅者,然后emit将对应的事件进行发布,去执行事件中心里的对应的监听器

(1)vue先创建一个构造器,维护一个事件中心events

"""

  1. function EventEmiter(){
  2. this.events = {}
  3. }

"""



(2)$on

"""

  1. EventEmiter.prototype.on = function(event,cb){
  2. if(this.events[event]){
  3. this.events[event].push(cb)
  4. }else{
  5. this.events[event] = [cb]
  6. }
  7. }

"""




(3)$emit

"""

  1. EventEmiter.prototype.emit = function(event){
  2. let args = Array.from(arguments).slice(1)
  3. let cbs = this.events[event]
  4. if(cbs){
  5. cbs.forEach(cb=>{
  6. cb.apply(this,args)
  7. })
  8. }
  9. }

"""



Vue点击click事件解析

vue算是前端技术比较火的一门技术了,所以在日常开发当中掌握它还是比较重要的,废话不多说,先上代码:
"""

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <!--<script src="./vue.js"></script>-->
  7. <script src="2.5.20-vue.js"></script>
  8. </head>
  9. <body>
  10. <div id="app">

"""
//@click点击事件getMethod和getMethod()带不带小括号其实没多大的区别,vue在底层会把传过去的函数统一解析成为方法,带小括号说明有相应的实参传入方法体里面;

"""

  1. <!--<p @click="getMethod">aaaa</p>-->
  2. <!--<p @click="getMethodFun">aaaa</p>-->
  3. <p @click="getMethod()">aaaa</p>
  4. <p @click="getMethodFun()">bbbb</p>
  5. </div>
  6. </body>
  7. <script>
  8. var app = new Vue({
  9. el: '#app',
  10. data: function () {
  11. return {
  12. message: 'father',
  13. show: true
  14. };
  15. },
  16. methods: {
  17. getMethod () { //点击事件的时候去寻找相应的方法,在底层做转换直接写方法名,大括号里面写相应的业务逻辑
  18. console.log('11');
  19. },
  20. //也可以采用匿名函数的写法定义方法名,然后进行调用这种方法也是可以的,只不过getMethod ()的写法更加简洁,但是在实际开发当中这个可是不支持的例如 aaFunc (){} //直接这样写是会报错的,一定要注意;
  21. getMethodFun: function () {
  22. console.log('22')
  23. }
  24. },
  25. });
  26. </script>
  27. </html>

"""



今天就分享到这里啦,有时间会续更哦,感谢支持!

原文链接:https://www.cnblogs.com/xw-01/p/17564334.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号