zoukankan      html  css  js  c++  java
  • uniapp学习笔记

    vue方式导入js

    <script>
      import index from "./index.js";
      export default index;
    </script>

    vue方式导入css

    <style>  
        @import "./common/uni.css";  
    
        .uni-hello-text{  
            color:#7A7E83;  
        }  
    </style>

    如需要全局导入vue组件,即每个页面都可以直接使用而不用引用和注册的话,在项目根目录下的main.js里处理。如下是hello uni-app里的例子。

    //main.js  
    import pageHead from './components/page-head.vue' //导入  
    Vue.component('page-head', pageHead) //注册。注册后在每个vue的page页面里可以直接使用<page-head></page-head>组件。

    组件/标签的变化

    以前是html标签,现在是小程序组件。
    具体说来:

    • div 改成 view
    • span、font 改成 text
    • a 改成 navigator
    • img 改成 image
    • input 还在,但type属性改成了confirmtype
    • formbuttoncheckboxradiolabeltextareacanvasvideo 这些还在。
    • select 改成 picker
    • iframe 改成 web-view
    • ul、li没有了,都用view替代
    • audio 不再推荐使用,改成api方式,背景音频api文档
      其实老的HTML标签也可以在uni-app里使用,uni-app编译器会在编译时把老标签转为新标签,比如把div编译成view。但不推荐这种用法,调试H5端时容易混乱。

    除了改动外,新增了一批手机端常用的新组件

    除了内置组件,还有很多开源的扩展组件,把常用操作都进行封装,DCloud建立了插件市场收录这些扩展组件,详见插件市场

    js运行环境变化

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

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

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

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

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

    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,详见条件编译

    css的变化

    标准的css基本都是支持的。

    选择器有2个变化:*选择器不支持;元素选择器里没有body,改为了page。微信小程序即是如此。

    复制代码page{  
    
    }

    单位方面,px无法动态适应不同宽度的屏幕,rem无法用于nvue/weex。如果想使用根据屏幕宽度自适应的单位,推荐使用rpx,全端支持。 尺寸单位文档

    uni-app推荐使用flex布局,并默认就是flex布局,这个布局思路和传统流式布局有点区别。但flex的有趣在于,不管是什么技术都支持这种排版,web、小程序/快应用、weex/rn、原生的iOS、Android开发,全都支持flex。它是通吃所有端的新一代布局方案。相关教程请自行百度学习。

    uni-app的vue文件里支持所有web排版方式,不管是流式还是flex。但nvue里,只支持flex,因为它在app端是使用原生排版引擎渲染的。

    注意背景图和字体文件尽量不要大于40k。会影响性能。如果非要大于40k,需放到服务器侧远程引用或base64后引入,不能放到本地作为独立文件引用。在小程序里,其实小于40k的文件在css里也无法引用,uni-app编译器在编译时自动做了处理,把小于40k的文件编译为base64方式了。

    工程结构和页面管理

    uni-app的工程结构有单独的要求,详见

    每个可显示的页面,都必须在 pages.json 中注册。如果你开发过小程序,那么pages.json类似app.json。如果你熟悉vue,这里没有vue的路由,都是在pages.json里管理。

    原来工程的首页一般是index.html或default.html,是在web server里配的。而uni-app的首页,是在pages.json里配的,page节点下第一个页面就是首页。一般在/pages/xx的目录下。

    app和小程序中,为了提升体验,页面提供了原生的导航栏和底部tabbar,注意这些配置是在pages.json中做,而不是在vue页面里创建,但点击事件的监听在显示的vue页面中做。

    在vue中,以前的js事件监听概念改为了生命周期概念。详见uni-app生命周期

    如果你熟悉小程序开发的话,对比变化如下:

    • 原来app.json被一拆为二。页面管理,被挪入了uni-app的pages.json;非页面管理,挪入了manifest.json
    • 原来的app.js和app.wxss被合并到了app.vue中

     

    关于各端的管理规则需要耐心学习

    uni-app并不难学,但我们注意到很多新人在适应各个平台的规则限制时比较急躁。

    每个端,有每个端的管理规则,这不是uni-app在技术层面上可以抹平的:

    • 比如H5端的浏览器有跨域限制;
    • 比如微信小程序会强制要求https链接,并且所有要联网的服务器域名都要配到微信的白名单中;
    • 比如App端,iOS对隐私控制和虚拟支付控制非常严格;
    • 比如App端,Android、国产rom各种兼容性差异,尤其是因为谷歌服务被墙,导致的push、定位等开发混乱的坑;
    • 如果你的App要使用三方sdk,比如定位、地图、支付、推送...还要遵循他们的规则和限制;

    小程序组件支持

    uni-app 支持在 App 和 小程序 中使用小程序自定义组件,从HBuilderX2.4.7起,H5端也可以运行微信小程序组件。

    作者:dlm17
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    Django----抽屉项目 笔记
    Django验证码【附源码】
    C语言--循环控制结构
    javascript 流程控制及函数
    yield和yield from
    python面试题(转)
    断言assert用法
    javascript基本语法
    python经典一百道习题(转自奶酪博客)
    functools模块中的函数
  • 原文地址:https://www.cnblogs.com/dlm17/p/12660042.html
Copyright © 2011-2022 走看看