zoukankan      html  css  js  c++  java
  • 【小程序】使用uni-app搭建小程序环境---js变化

    js的变化

    js的变化,分为运行环境变化、数据绑定模式变化、api变化3部分。

    • 运行环境从浏览器变成v8引擎

    标准js语法和api都支持,比如if、for、settimeout、indexOf等。

    但浏览器专用的window、document、navigator、location对象,包括cookie等存储,只有在浏览器中才有,app和小程序都不支持。

    可能有些人以为js等于浏览器里的js。其实js是ECMAScript组织管理的,浏览器中的js是w3c组织基于js规范补充了window、document、navigator、location等专用对象。

    在uni-app的各个端中,除了h5端,其他端的js都运行在一个独立的v8引擎下,不是在浏览器中,所以浏览器的对象无法使用。如果你做过小程序开发,对此应当很了解。

    这意味着依赖document的很多HTML的库,比如jqurey无法使用。

    当然app和小程序支持web-view组件,里面可以加载标准HTML,这种页面仍然支持浏览器专用对象window、document、navigator、location。

    • 以前的dom操作,改成vue的MVVM模式

    现在前端趋势是去dom化,改用mvvm模式,更简洁的写法,大幅减少代码行数,同时差量渲染性能更好。

    uni-app使用vue的数据绑定方式解决js和dom界面交互的问题。

    如果你想改变某个dom元素的显示内容,比如一个view的显示文字:

    以前是给view设id,然后js里通过选择器获取dom元素,进一步通过js进行赋值操作,修改dom元素的属性或值。

    如下演示了一段代码,页面中有个显示的文字区和一个按钮,点击按钮后会修改文字区的值

    复制代码<html>  
        <head>  
            <script type="text/javascript">  
                document.addEventListener("DOMContentLoaded",function () {  
                    document.getElementById("spana").innerText="456"  
                })  
                function changetextvalue () {  
                    document.getElementById("spana").innerText="789"  
                }  
            </script>  
        </head>  
        <body>  
            <span id="spana">123</span>  
            <button type="button" onclick="changetextvalue()">修改为789</button>  
        </body>  
    </html>  
    

    现在的做法,是vue的绑定模式,给这个dom元素绑定一个js变量,在script中修改js变量的值,dom会自动变化,页面会自动更新渲染

    复制代码<template>  
        <view>  
            <text>{{textvalue}}</text><!-- 这里演示了组件值的绑定 -->  
            <button :type="buttontype" @click="changetextvalue()">修改为789</button><!-- 这里演示了属性和事件的绑定 -->  
        </view>  
    </template>  
    
    <script>  
        export default {  
            data() {  
                return {  
                    textvalue:"123",  
                    buttontype:"primary"  
                };  
            },  
            onLoad() {  
                this.textvalue="456"//这里修改textvalue的值,其实123都来不及显示就变成了456  
            },  
            methods: {  
                changetextvalue() {  
                    this.textvalue="789"//这里修改textvalue的值,页面自动刷新为789  
                }  
            }  
        }  
    </script>

    如果你学过小程序的数据绑定,但不了解vue,要注意:

    • 小程序的数据绑定参考了vue,但自己修改了一些。在uni-app中只支持标准的vue,不支持小程序的数据绑定语法

    • 小程序里的setData在uni-app里并不存在,因为vue是自动双向数据绑定的。直接通过赋值方式修改数据,如果数据绑定到界面上,界面会自动更新渲染

    • js api的变化

    因为uni-app的api是参考小程序的,所以和浏览器的js api有很多不同,如

    1. alert,confirm 改成 uni.showmodel
    2. ajax 改成 uni.request
    3. cookie、session 没有了,local.storage 改成 uni.storage

    uni-app的js api还有很多,但基本就是小程序的api,把wx.xxx改为uni.xxx即可。详见

    uni-app在不同的端,支持条件编译,无限制的使用各端独有的api,详见条件编译

  • 相关阅读:
    Qt之课外实践——文件操作(简单清道夫)
    【转载】2018 hosts 持续更新访问 gu歌【更新于:2018-05-03】
    NBU基本常用命令
    运维的四个发展阶段,看看自己在哪个阶段,聊聊怎么升级打怪
    云笔记使用心得分享
    LNMP一键安装包
    expect脚本中,变量的写法
    VERITAS NETBACKUP运维手册(工作总结)
    善用良器:帮你有效管理时间的7种工具
    RAID0 1 5 10原理、种类及性能优缺点对比
  • 原文地址:https://www.cnblogs.com/websmile/p/11585772.html
Copyright © 2011-2022 走看看