小程序开发之wepy中的ES6知识

2024-06-12 15:58

本文主要是介绍小程序开发之wepy中的ES6知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 微信小程序开发流程

    初始化

    1. 前置条件

      • 服务端完成相应的接口开发
      • 申请小程序个人帐号
      • PostMan 和 API
    2. 安装微信开者工具

      • 插件模式
      • 快速启动模板模式
      • 空项目初始化
        • 自动生成 project.config.json
    3. 小程序基础环境

      • 初始化WePY
        • 原生格局
          • 配置 json
          • 模板 wxml
          • 样式 wxss
          • 交互逻辑 js
      • 安装WePY

        // 全局安装或更新WePY命令行工具
        npm install wepy-cli -g
        // 查看项目模板
        wepy list
        // 初始化项目(默认模板开启了promise,async,function等)
        wepy init standard miapp
        // 进入项目目录,安装依赖
        npm install
        // 开启实时编译
        wepy build --watch
        
      • 配置文件

        • 项目配置
          project.config.json内含程序入口
          • "miniprogramRoot": "./dist"
        • wepy编译配置
          • wepy.config.js
        • 开发工具勾选不验证ssL之类
    4. wepy目录结构

      • src 代码编写目录
      • src/app.wpy 框架项目的入口文件
      • src/pages 小程序页面
      • dist 小程序运行代码目录(该目录由WePY的build指令自动编译生成)
    5. 小程序开发流程

      • wepy框架在编辑器内编码
      • 开发工具负责调试

    预备知识

    1. 语法提案流程

      • Stage 0 - Strawman 展示阶段
      • Stage 1 - Proposal(征求意见阶段)
      • Stage 2 - Draft(草案阶段)
      • Stage 3 - Candidate(候选人阶段)
      • Stage 4 - Finished(定案阶段)
    2. 转码器

      • babel 将ES6转码为ES5
      • .babelrc
        设置转码规则和插件
      • babel-register 模块
        改写require命令,为它加上一个钩子,对require命令加载的文件实时转码
      • babel-core 模块
        使用Babel 的 API 进行转码
      • babel-polyfill
        转换新的 JavaScript 句法(syntax),而不转换新的 API
      • Traceur 转码器
    3. let 与 const

      • let变量
        • 只在let命令所在的代码块({})内有效。
        • for循环
          • 设置循环变量的那部分是一个父作用域
          • 循环体内部是一个单独的子作用域
        • 不存在变量提升
        • 暂时性死区(temporal dead zone,简称 TDZ)
          • let 变量凡在声明之前使用会报错
        • 同一块域内,不允许重复声明
      • 块级作用域存在的意义

        • 防止内层变量可能会覆盖外层变量
        • 避免用来计数的循环变量泄露为全局变量
        • 块级作用域的出现,使立即执行函数表达式(IIFE)不再必要

              // IIFE 写法(function () {var tmp = ...;...}());// 块级作用域写法{let tmp = ...;...}
      • const 常量
        • 声明一个只读的常量
        • 只在声明所在的块级作用域内有效
        • 只能在声明的位置后面使用
        • 不可重复声明
      • const 常量本质
        • 该变量指向的那个内存地址所保存的数据不得改动
          • 数值、字符串、布尔值简单数据,等同于常量
          • 复合类型的数据对象和数组,const只能保证这个指针是指向另一个固定的地址
    4. 解构赋值

      • 数组

        • 模式匹配

          let [head, ...tail] = [1, 2, 3, 4];
          head // 1
          tail // [2, 3, 4]
        • 嵌套赋值
        • 数据结构具有 Iterator 接口

              function* fibs() {let a = 0;let b = 1;while (true) {yield a;[a, b] = [b, a + b];}}let [first, second, third, fourth, fifth, sixth] = fibs();sixth // 5
          
      • 默认值
        解构赋值允许指定默认值

        let [foo = true] = [];
        foo // true
      • 对象
        • 对象的属性没有次序,变量必须与属性同名,才能取到正确的值

          let { bar, foo } = { foo: "aaa", bar: "bbb" }
          foo // "aaa"
          bar // "bbb"
        • 对象解构赋值 模式VS变量区分
    5. 数组的扩展

      • 扩展运算符…
        将一个数组转为用逗号分隔的参数序列

            console.log(...[1, 2, 3])// 1 2 3[...'hello']// [ "h", "e", "l", "l", "o" ]
    6. ES6 其它

      • Proxy 修改某些操作的默认行为
      • Reflect 拿到语言内部的方法
      • Promise pending fulfilled rejected
      • Map和Set数据
        • Map 普通对象的键只能是字符串,但map可以是值:值形式
        • Set 不允许重复项,支持集合运算(类似redis)
      • Generator函数返回一个遍历器对象
    7. ES6类的私有性

      • 私有方法(ES6不提供,通过变通方法模拟实现)
        利用symbol值的唯一性

            const bar = Symbol('bar');const snaf = Symbol('snaf');export default class myClass{// 公有方法foo(baz) {this[bar](baz);}// 私有方法[bar](baz) {return this[snaf] = baz;}// ...};
      • 实现私有方法的三种思路
        • 在命名上加以区别
        • 索性将私有方法移出模块,模块内部的所有方法都是对外可见
        • 利用Symbol值的唯一性,将私有方法的名字命名为一个Symbol值
      • 私有属性提案
        • 在属性名之前加#, @已经被留给了 Decorator
      • 箭头函数中的this会与定义域的父级绑定
    8. Symbol

      • 表示独一无二的值,是值而非对象,不能添加属性。
      • 作为属性名的Symbol

        • 防止某一键不小心被改写或覆盖
        • Symbol 值作为对象属性名时,不能用点运算符
              let mySymbol = Symbol();// 第一种写法let a = {};a[mySymbol] = 'Hello!';// 第二种写法let a = {[mySymbol]: 'Hello!'};// 第三种写法let a = {};Object.defineProperty(a, mySymbol, { value: 'Hello!' });// 以上写法都得到同样结果a[mySymbol] // "Hello!"const mySymbol = Symbol();const a = {};a.mySymbol = 'Hello!';a[mySymbol] // undefineda['mySymbol'] //  "Hello!"
      • 在对象的内部,使用 Symbol 值定义属性时,Symbol 值必须放在方括号之中
        • 如若不在方括号中,属性的键名就是字符串,而非代表的symbol值

          // ES6 增强对象写法
          let obj = {
          [s](arg) { ... }
          };
      • Symbol 作为属性名,以 Symbol 值作为名称的属性,不会被常规方法遍历得到
        • Object.getOwnPropertySymbols方法才可以,本质上来讲也不是私有属性,只是看起来像(鸭子模型,看起来像鸭子它就是鸭子)

    小结

    js中有许多似是而非的东西,明明严格意义上来讲,没这玩意儿。但为了装,他总是模仿,让不知底细的你信以为真,用的时候报错,还莫名奇妙。

这篇关于小程序开发之wepy中的ES6知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054671

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo