当前位置: 首页 > news >正文

家具设计理念常用的seo工具

家具设计理念,常用的seo工具,上海网站建设备案号怎么恢复,昆山市做网站的公司1. 过滤器 定义:对要显示的数据进行特定格式转换再显示(适用于一些简单逻辑的处理)语法: 注册过滤器:Vue.filter(name, callback) 或 new Vue{filters:{}}使用过滤器:{{ xx | 过滤器名 }} 或 v-bind:属性 …

1. 过滤器

  1. 定义:对要显示的数据进行特定格式转换再显示(适用于一些简单逻辑的处理)
  2. 语法:
    1. 注册过滤器:Vue.filter(name, callback)new Vue{filters:{}}
    2. 使用过滤器:{{ xx | 过滤器名 }}v-bind:属性 = "xxx | 过滤器名"
  3. 备注:
    1. 过滤器也可以接受额外参数、多个过滤器也可以串联
    2. 并没有改变原本的数据,是产生新的对应的数据

示例:(局部过滤器)

	<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script></head><body><div id="app"><!-- 计算属性 --><h3>计算属性:</h3><p>{{ nameUpper }}</p><hr><h3>过滤器:</h3><!-- 过滤器 --><p>{{ name | nameSliceFilter | nameUpperFilter }}</p><p>{{ name | nameUpperFilter }}</p><hr><!-- 过滤器传参数 --><!-- <p>{{ longName | nameSliceFilter2(9, '测试传值') }}</p> --><p>{{ longName | nameSliceFilter2(9) }}</p><p>{{ longName | nameSliceFilter2() }}</p><hr><!-- 属性过滤器 --><p :name="name | nameSliceFilter | nameUpperFilter">属性过滤器文本</p></div><script>const vm = new Vue({el: '#app',data:{name: 'abcdefg',longName: 'abcdefghigklmn'},// 计算属性computed:{nameSlice(){return this.name.slice(0,3)},nameUpper(){return this.nameSlice.toUpperCase()}},// 过滤器filters:{nameSliceFilter(val){// console.log(val);return val.slice(0,3)},nameUpperFilter(val){return val.toUpperCase()},// 过滤器传值// 可以传值,传多少个参数,就接收多少参数,但是第一个参数永远是原本数据// nameSliceFilter2(val,length, text){//     console.log(val, length,text);// }// nameSliceFilter2(val, length){nameSliceFilter2(val, length = 3){console.log(val, length);return val.slice(0, length)}}})</script></body></html>

示例:(全局过滤器)

	<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script></head><body><div id="app"><p>{{ name | nameSliceFilter }}</p><p>{{ longName | nameUpperFilter }}</p></div><div id="root"><p>{{ rootName | nameSliceFilter }}</p></div><script>// 必须要把全局筛选器提前配置好Vue.filter('nameSliceFilter',(val)=>{return val.slice(0,3) })// app 实例挂载new Vue({el: '#app',data:{name: 'abcdefg',longName: 'abcdefghigklmn'},// 过滤器filters:{// vue实例内的筛选器优先级更高// nameSliceFilter(val){//     return val.slice(0,4)// },nameUpperFilter(val){return val.toUpperCase()}}})// root实例挂载new Vue({el: '#root',data:{rootName: '这是rootName的值'},})</script></body></html>

2. 内置指令

  1. v-bind, v-on,v-show

  2. v-text指令:

    1. 作用:向其所在的节点中渲染文本内容
    2. 与差值语法的区别:v-text会替换掉节点中的内容,{{ xx }} 不会

    示例:

    <body><div id="app"><!-- 通常 {{ }} 表较多, 更灵活 --><p>{{ name }}</p><p v-text="name"></p><hr><p>你好, {{ name }}</p><p v-text="name">你好,</p><hr><p>{{ str }}</p><p v-text="str"></p></div><script>new Vue({el: "#app",data:{name: "小红",str: '<h3>这是个标题</h3>'}})</script>
    </body>
    
  3. v-html指令:

    1. 作用:向指定节点中渲染包含html结构的内容
    2. 与插值语法的区别:
      1. v-html会替换掉节点中所有的内容,{{ xx }}不会
      2. v-html可以识别html结构
    3. 严重注意:v-html有安全问题:
      1. 在网站上动态渲染任意HTML是非常危险的,容易收到XSS攻击
      2. 一定要在可信的内容上使用v-html,永不要在用户提交的内容上

    示例:

        <body><div id="app"><p>{{ str }}</p><p v-text="str"></p><p v-html="str"></p></div><script>new Vue({el: "#app",data:{str: '<h3>这是个标题</h3>'}})</script></body>
    
  4. v-cloak指令(没有值):

    1. 本质是一个特殊属性,Vue实例创建完毕并接管容器后,会删掉v-cloak属性
    2. 使用css配合v-cloak可以解决网速慢时页面展示出 {{ xx }} 的问题
	<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script><style>[v-cloak]{display: none;}</style></head><body><div id="app"><p v-cloak>{{ name }}</p></div><script>const vm = new Vue({// el: "#app",data:{name: '小红'}})setTimeout(() => {vm.$mount("#app")}, 5000);</script></body></html>
  1. v-once指令:

    1. v-once所在的节点初次动态渲染后,就视为静态内容了
    2. 以后数据的改变不会引起v-once所在结构的更新,可以用于优化性能

    示例:

    <body><div id="app"><!-- 需求: 显示初始值,也显示修改后的值 --><p v-once>初始的n值是:{{ n }}</p><p>当前的n值是:{{ n }}</p><button @click="n++">添加</button></div><script>new Vue({el: "#app",data:{n: 8}})</script>
    </body>
    
  2. v-pre指令:

    1. 跳过其所在节点的编译过程
    2. 可利用它跳过:没有使用指令语法、没有使用插值语法的节点,会加快编译

    示例:

    <body><div id="app"><p v-pre>当前的n值是:</p><p>{{ n }}</p><button @click="n++" >添加</button></div><script>new Vue({el: "#app",data:{n: 8}})</script>
    </body>
    
  3. Vue模板语法有2大类:

    1. 插值语法:
      • 功能: 用于解析标签体内容
      • 写法: {{ xx }}, xx是js表达式,且可以直接读取到data中的所有属性
    2. 指令语法:
      • 功能:用于解析标签(包括:标签属性,标签体内容,绑定事件…)
      • 举例:v-bind:href= ‘xxx’ 或简写 :href= ‘xxx’ xxx同样要写表达式,且可以直接读取到data中的属性
      • 备注:Vue中有很多的指令,且形式都是:v-???,此处我们只拿v-bind举个例子

3. 自定义指令:

  1. 本质:是一个函数,不靠返回值获取值,靠操作收到的参数去获取值
  2. 作用: 操作DOM元素: 例如v-bind,v-show,v-if等都是对DOM元素进行操作
  3. 两种方式:
    1. 函数式:写法简单,不能操作一些细节
    directives:{// big函数何时会被调用?//  1. 指令与元素成功绑定时,(初始时)//  2. 指令所在的模板被重新解析时big(element, binding){// element:指令所绑定的元素,可以用来直接操作 DOM// binding:一个对象,包含很多属性//    value: 指令的绑定值//    name: 指令名,不包括 v- 前缀//    expression:字符串形式的指令表达式console.log(element, binding);element.innerHTML = binding.value * 10}
    }
    
    1. 对象式: 详细的表明执行到某一特定时期,调用特定函数
     directives:{fbind:{//  指令与元素成功绑定时,(初始时)bind(element, binding){// console.log('1',element, binding);element.value = binding.value},// 指令所在的元素被插入页面时inserted(element, binding){// console.log(2,element, binding);element.focus()},// 指令所在的模板被重新解析时update(element, binding){// console.log(3,element, binding)element.value = binding.value}}}
    
    1. 定义语法:
      1. 局部指令:
      new Vue({
      directives:{指令名: 配置对象}
      })
      或
      new Vue({
      directives:{指令名: 回调函数}
      })
      
      1. 全局指令:
      Vue.directive(指令名, 配置对象)
      或
      Vue.directive(指令名, 回调函数)
      
  4. 配置对象中常用的3个回调:
    1. bind: 指令与元素成功绑定时调用
    2. inserted: 指令所在元素被插入页面时调用
    3. update: 指令所在模板结构被重新解析时调用
  5. 备注:
    1. 指令定义时不加v-, 但使用时要加v-
    2. 指令中的this指向的是window
    3. 指令名如果是多个单词,要使用kebab-case命名方式,不要用camelCase命名

示例:(局部指令–对象式)

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script></head><body><!-- 需求1:写一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍 --><!-- 需求2:写一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素自动获取焦点 --><div id="app"><button @click="n++">操作</button><hr><input type="text" v-fbind="n"/></div><script>const vm = new Vue({el: '#app',data:{n: 1},directives:{// 函数式:// big函数何时会被调用?//  1. 指令与元素成功绑定时,(初始时)//  2. 指令所在的模板被重新解析时// fbind(element, binding){//    element.value = binding.value//    element.focus()// }// 对象式:fbind:{//  指令与元素成功绑定时,(初始时)bind(element, binding){// console.log('1',element, binding);element.value = binding.value},// 指令所在的元素被插入页面时inserted(element, binding){// console.log(2,element, binding);element.focus()},// 指令所在的模板被重新解析时update(element, binding){// console.log(3,element, binding)element.value = binding.value}}}})</script></body></html>

示例:(局部指令–函数式)

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script></head><body><!-- 需求1:写一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍 --><!-- 需求2:写一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素自动获取焦点 --><div id="app"><p>{{ name }}</p><h3>当前的n值是:<span v-text="n"></span></h3><h3>放大10倍后的n值是:<span v-big="n"></span></h3><button @click="n++">操作</button></div><script>const vm = new Vue({el: '#app',data:{name: '小红',n: 1},directives:{// big函数何时会被调用?// 1. 指令与元素成功绑定时,(初始时)// 2. 指令所在的模板被重新解析时big(element, binding){// console.log(element, binding);console.log('big');element.innerHTML = binding.value * 10}}})</script></body></html>

示例:(全局指令)

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script></head><body><div id="app"><h3>当前的n值是:<span v-text="n"></span></h3><!-- <h3>放大10倍后的n值是:<span v-big-number="n"></span></h3> --><h3>放大10倍后的n值是:<span v-big="n"></span></h3><button @click="n++">操作</button></div><hr><div id="root"><h3>当前的n值是:<span v-text="n"></span></h3><h3>放大10倍后的n值是:<span v-big="n"></span></h3><button @click="n++">操作</button></div><script>Vue.directive('big',(element, binding)=>{element.innerHTML = binding.value * 20})new Vue({el: '#app',data:{n: 1},directives:{// 多个单词的话,推荐使用kebab-case命名// 'big-number'(element, binding){//   // console.log(element, binding);//   console.log('big', this) // this指向window//   element.innerHTML = binding.value * 30// },// 优先级更高big(element, binding){// console.log(element, binding);console.log('big', this) // this指向windowelement.innerHTML = binding.value * 10}}})new Vue({el: '#root',data:{n: 1},})</script></body></html>
http://www.hrbkazy.com/news/16286.html

相关文章:

  • 想建一个自己的网站站长平台工具
  • 通化好的网站建设的公司百度投诉中心24人工客服
  • 绍兴网站关键词优化seo排名软件哪个好用
  • 网站商城定制网站建设百度搜索广告怎么收费
  • 色盲测试商丘关键词优化推广
  • 透视图在什么网站上可以做个人博客网页设计html
  • 怎么做网站做站点小程序定制
  • 西宁做政府网站的公司wix网站制作
  • 邯郸企业网站建设公司百度竞价排名背后的伦理问题
  • 搞笑网站建设目的和意义网络销售真恶心
  • 装饰公司在哪个网站上接活网络营销岗位
  • 自己做的网站怎么弄成app如何优化网络
  • 网站运营专员是干嘛的seo免费视频教程
  • 做准的算命网站个人网站网址
  • 肇庆做网站seo技术教程博客
  • 自己怎么做网上注册免费的网站做网站哪家好
  • java jsp做网站外贸建站与推广
  • 提升学历选择哪种方式好济南seo关键词优化方案
  • 企业网站怎么做毕业设计企业网站的功能
  • 网站前台模板 html网站建设的基本
  • java网站开发前景网络广告文案案例
  • c 做网站简单还是java推广普通话的内容
  • 装饰公司网站模版seo排名首页
  • 解决方案网站seo综合查询站长工具关键词
  • 聊城正规网站建设设计公司宁波seo教程网
  • 公安网站备案需要注意什么教育培训机构营销方案
  • 免费网站软件哪个好网页浏览器
  • 北京网站建设那些seo自动点击排名
  • 个人网站设计作品长春关键词搜索排名
  • 河北省住房和城乡建设部网站seo诊断工具