zoukankan      html  css  js  c++  java
  • 移动端开发基础【12】条件编译

    1.跨端兼容

    Uni-app已经将常用的组件、JS、API封装到框架中,开发者只需要按照uni-app规范开发即可保证多个平台的兼容,大部分业务都可以直接实现。

    但是,每一个平台都有自己的一些特性,所以会存在一些无法跨平台的情况。

    在程序中写大量的if else语句,会造成代码执行性能低下以及管理的混乱。

    编译到不同工程后二次修改,会让后续升级变的很麻烦。

    在C语言中,通过#ifdef、#ifndef的方式,为windows、mac等不同的代码,uni-app也根据C语言的这种方式,为uni-app能在各个平台实现个性化处理,提供了条件编译这种手段。

    2.跨端兼容

    (1)条件编译:用特殊的注释作为标记,在程序编译时根据这些特殊的注释,将注释里面的代码编译到不同的平台,实现在不同平台上的显示。

    在使用条件编译的时候需要注意:Android 和IOS平台不支持通过条件编译来区分,如果需要区分Android、IOS平台,可以通过调用uni.getSystemInfo方法来获取平台信息。

    (2)条件编译的写法:以#ifdef或#ifndef加%PLATFORM%开头,以#endif结尾。

    #ifdef: if defined 仅在某平台存在

    #ifndef : if not defined 除了某平台均存在

    %PLATFORM% : 平台名称

     

    %PLATFORM%可取值如下:

     

    (3)支持的文件

    .vue

    .js

    .css

    Pages.json

    各预编译语言文件,如:.scss、.less、.styus、.ts、.pug

    条件编译是通过添加注释的方式来实现的,以上支持的文件在不同语法里面注释的写法不同,js使用 // 注释、css 使用 /* 注释 */、vue和nvue模板里面使用 :

    2.1 API的条件编译

    // #ifdef       %PLATFORM%

    平台特有的API实现

    // #endif

    (1)  只在5+APP平台编译的代码

     

    (2)  在H5平台不会编译并且显示的代码

     

    (3)  在使用条件编译的时候,除了支持单个平台外,还可以支持多个平台同时编译,这之间使用 || 来分隔平台名称。例如:会在5+APP和H5两个平台同时编译的代码

     

    2.2组件的条件编译

    <!-- #ifdef        %PLATFORM%  -->

    平台特有的组件

    <!-- #endif -->

    (1)  下面的广告组件仅仅会在微信小程序中出现

     

    2.3样式的条件编译

    <!-- #ifdef        %PLATFORM%  -->

    平台特有的样式

    <!-- #endif -->

    在使用样式的条件编译时,无论是css还是sass/scss/less/stylus等预编译语言中,必须使用 / 注释 / 的写法。

    (1)  正确的写法:

     

    (2)  错误的写法:

     

    2.4pages.json的条件编译

    如下:只有运行至5+APP时才会编译进去。

     

    注意:不同平台下的特有功能,以及小程序平台分包,都可以通过pages.json的条件编译来更好地实现。这样,就不会在其他平台产生多余的资源,进而减小包体积。

    2.5 static目录的条件编译

    在不同平台,引用的静态资源可能也存在差异,通过 static 的的条件编译可以解决此问题,static 目录下新建不同平台的专有目录(目录名称同 %PLATFORM% 值域,但字母均为小写),专有目录下的静态资源只有在特定平台才会编译进去。
    如以下目录结构,a.png 只有在微信小程序平台才会编译进去,b.png 在所有平台都会被编译。

    2.6 HBuilderX小技巧

    HBuilderX 为 uni-app 的条件编译提供了丰富的支持:
    (1)代码块支持:通过输入 ifdef 可快速生成条件编译的代码片段
    (2)语法高亮:对条件编译的代码注释部分提供了语法高亮

    (3)正确注释和快速选中:ctrl+alt+/ 即可生成正确注释(js:// 注释、css:/* 注释 */、vue/nvue模板: )。点击 ifdef 或 endif 可快速选中条件编译部分;点击左侧的折叠图标,可折叠条件编译部分代码。

    官网:http://www.lenbor.com
  • 相关阅读:
    [转载]使用uiautomator做UI测试
    [转载]Android相关开发网站
    [转载]Android开发必备的21个免费资源和工具
    c# List集合的Find方法适用
    c# GridView Footor列求合计
    c# List集合排序
    mysql中插入多条记录-微软批处理
    mysql中插入多条记录-微软批处理
    VS2005快捷键
    LinqToSql 小例子
  • 原文地址:https://www.cnblogs.com/lenbor/p/13085341.html
Copyright © 2011-2022 走看看