,会递归遍历代码中的require然后将对应依靠 文件从node_modules当中拷贝出来 ,而且 修改require为相对路径,从而实现对外部NPM包的支持 。4单文件模式,使得目次 布局 更加清楚 官方目次 布局 要求app必须有三个文件app.json,app.js ,app.wxss,页面有4个文件index.json,index.js ,index.wxml,index.wxss。而且文件必须同名。 以是 利用 wepy开辟 前后开辟 目次 对比如 下: 官方DEMO:project pages index index.json index.js index.wxml index.wxss log log.json log.wxml log.js log.wxss app.js app.json app.wxss利用 wepy框架后目次 布局 :project src pages index.wpy log.wpy app.wpy5默认利用 babel编译,支持ES6/7的一些新特性用户可以通过修改.wepyrc设置 文件 ,设置 本身 认识 的babel环境 举行 开辟 。默认开启利用 了一些新的特性如promise,async/await等等。示例代码:import wepy from 'wepy';export default class Index extends wepy.page { getData() { return new Promise((resolve, reject) = { setTimeout(() = { resolve({data: 123}); }, 3000); }); }; async onLoad() { let data = await this.getData(); console.log(data.data); };}6针对原生API举行 优化对如今 API举行 promise处理 惩罚 ,同时修复一些现有API的缺陷 ,比如 :wx.request并发题目 等。 原有代码:onLoad = function () { var self = this; wx.login({ success: function (data) { wx.getUserInfo({ success: function (userinfo) { self.setData({userInfo: userinfo}); } }); } });}基于wepy实当代 码:async onLoad() { await wx.login(); this.userInfo = await wx.getUserInfo();}进阶阐明 :.wepyrc 设置 文件阐明 实行 wepy new demo后,会天生 雷同 设置 文件。{ "wpyExt": ".wpy", "sass": {}, "less": {}, "babel": {}}wpyExt: 缺省值为’.wpy’,IDE默认环境 下不会对此文件范例 高亮 ,此时可以修改全部 文件为.vue后缀(由于 与vue高亮规则一样),然后将此选项修改为.vue,就能办理 部分 IDE代码高亮题目 。 一个.wpy文件分为三个部分 :样式style/style对应原有wxss。模板template/template对应原有wxml。代码script/script对应原有js 。此中 入口文件app.wpy不必要 template,以是 编译时会被忽略。这三个标签都支持type和src属性 ,type决定了其代码编译过程,src决定是否外联代码,存在src属性且有效 时 ,忽略内联代码,示比方 下:style type="less" src="page1.less"/styletemplate type="wxml" src="page1.wxml"/templatescript // some code/script标签对应 type 值如下表所示:标签 type默认值 type支持值style css css,less ,sass(待完成)template wxml wxml,xml,html(待完成)script js js ,TypeScript(待完成)script阐明 程序入口app.wpystyle type="less"/** less **//stylescriptimport wepy from 'wepy';export default class extends wepy.app { config = { "pages":[ "pages/index/index" ], "window":{ "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "WeChat", "navigationBarTextStyle": "black" } }; onLaunch() { console.log(this); }}/script入口app.wpy继承 自wepy.app,包罗 一个config属性和其全局属性、方法 、变乱 。此中 config属性对应原有的app.json,编译时会根据config天生 app.json文件 ,假如 必要 修改config中的内容,请利用 体系 提供API 。页面index.wpystyle type="less"/** less **//styletemplate type="wxml" view /view component id="counter1" path="counter"/component/templatescriptimport wepy form 'wepy';import Counter from '../components/counter';export default class Index extends wepy.page { config = {}; components = {counter1: Counter}; data = {}; methods = {}; events = {}; onLoad() {}; // Other properties}/script页面入口继承 自wepy.page,重要 属性阐明 如下:属性 阐明 config 页面config,相称 于原来的index.json ,同app.wpy中的configcomponents 页面引入的组件列表data 页面必要 渲染的数据methods wmxl的变乱 捕获 ,如bindtap,bindchangeevents 组件之间通过broadcast ,emit转达 的变乱 别的 如onLoad,onReady等小程序变乱 以及别的 自界说 方法与属性组件com.wpystyle type="less"/** less **//styletemplate type="wxml" view /view/templatescriptimport wepy form 'wepy';export default class Com extends wepy.component { components = {}; data = {}; methods = {}; events = {}; // Other properties}/script页面入口继承 自wepy.component,属性与页面属性一样 ,除了不必要 config以及页面特有的一些小程序变乱 等等。组件在小程序中,可以利用 JS模块化 和wxml模板 ,对业务模块举行 分别 ,实现如下结果 :但实际 上差别 的模块代码与变乱 交互都是在同一个页面空间处理 惩罚 的,比如 说 moduleA 和 moduleB 中同时存在一个 add 相应 变乱 时,就必要 在 html 和 js 中分别界说 为 moduleA_add ,moduleB_add。业务模块复杂之后就倒霉 于开辟 和维护 。在wepy中,利用 组件化的特性可以办理 此类题目 ,如下图:ComA 和 ComB中心 的数据与变乱 相互隔离,可以分别拥有本身 的add变乱 。组件引用当页面大概 组件必要 引入子组件时 ,必要 在页面大概 script中的components给组件分配唯一id,而且 在template中添加component标签,如index.wpy。页面和组件都可以引入子组件 ,引入多少 组件后,如下图:Index页面引入A,B ,C三个组件,同时组件A和B又有本身 的子组件D,E ,F,G,H 。组件通讯 与交互wepy.component基类提供三个方法$broadcast ,$emit,$invoke,因此任一页面或任一组件都可以调用上述三种方法实现通讯 与交互,如:$this.$emit('some-event', 1, 2, 3, 4);组件的变乱 监听必要 写在events属性下 ,如:import wepy form 'wepy';export default class Com extends wepy.component { components = {}; data = {}; methods = {}; events = { 'some-event': ($event, ...args) { console.log(`${this.name} receive ${$event.name} from ${$event.source.name}`); } }; // Other properties}$broadcast $broadcast变乱 是由父组件发起,全部 子组件都会收到此广播变乱 ,除非变乱 被手动取消。变乱 广播的次序 为广度优先搜刮 次序 ,如上图,假如 Page_Index发起一个$broadcast变乱 ,那么吸取 到变乱 的先后次序 为:A, B, C, D, E, F, G, H。如下图:$emit $emit与$broadcast恰好 相反 ,变乱 发起组件的父组件会依次吸取 到$emit变乱 ,如上图,假如 E发起一个$emit变乱 ,那么吸取 到变乱 的先后次序 为:A, Page_Index。如下图:$invoke $invoke是一个组件对另一个组件的直接调用,通过传入的组件路径找到相应组件,然后再调用其方法 。 假如 想在Page_Index中调用组件A的某个方法:this.$invoke('ComA', 'someMethod', 'someArgs');假如 想在组件A中调用组件G的某个方法:this.$invoke('./../ComB/ComG', 'someMethod', 'someArgs');数据绑定小程序数据绑定方式小程序通过Page提供的setData方法去绑定命 据 ,如:this.setData({title: 'this is title'});由于 小程序架构本身 缘故起因 ,页面渲染层和JS逻辑层分开的,setData操纵 实际 就是JS逻辑层与页面渲染层之间的通讯 ,那么假如 在同一次运行周期内多次实行 setData操纵 时 ,那么通讯 的次数是一次还是 多次呢?在颠末 与开辟 小程序的同事求证后得知,确实会通讯 多次。wepy数据绑定方式wepy利用 脏数据查抄 对setData举行 封装,在函数运行周期竣事 时实行 脏数据查抄 ,一来可以不消 关心页面多次setData是否会有性能上的题目 ,二来可以更加简便 去修改数据实现绑定,不消 重复去写setData方法。代码如下:this.title = 'this is title';但需留意 ,在函数运行周期之外的函数里去修改数据必要 手动调用$apply方法 。如:setTimeout(() = { this.title = 'this is title'; this.$apply();}, 3000);   www.dashenniu.com ">

微信小程序云开辟 「 微信小程序云开辟 后端怎么搭建」(微信小程序云开发是什么意思)

  代码规范:变量与方法利用 只管 利用 驼峰式定名 ,克制 利用 $开头。 以$开头的方法大概 属性为框架内建方法大概 属性,可以被利用 ,利用 前请参考API文档入口,页面,组件的定名 后缀为.wpy。外链的文件可以是别的 后缀 。 请参考wpy文件阐明 利用 ES6语法开辟 。 框架在ES6下开辟 ,因此也必要 利用 ES6开辟 小程序,ES6中有大量的语法糖可以让我们的代码更加简便 高效。利用 Promise 框架默认对小程序提供的API全都举行 了 Promise 处理 惩罚 ,乃至 可以直接利用 async/await等新特性举行 开辟 。项目创建与利用 起首 安装wepy以下安装都通过npm安装安装 wepy 下令 行工具npm install wepy-cli -g在开辟 目次 天生 开辟 DEMOwepy new myproject开辟 及时 编译wepy build --watch项目目次 布局 dist node_modules src components com_a.wpy com_b.wpy pages index.wpy page2.wpy app.wpy package.json开辟 利用 阐明 利用 微信开辟 者工具新建项目 ,本地 开辟 选择dist目次 。微信开辟 者工具 – 项目 – 关闭ES6转ES5。本地 项目根目次 运行wepy build --watch,开启及时 编译 。重要 办理 题目 :1开辟 模式转换在原有的小程序的开辟 模式下举行 再次封装,更贴近于现有MVVM框架开辟 模式。框架在开辟 过程中参考了一些如今 框架的一些特性 ,而且 融入此中 ,以下是利用 wepy前后的代码对比图。官方DEMO代码://index.js//获取应用实例var app = getApp()Page({ data: { motto: 'Hello World', userInfo: {} }, //变乱 处理 惩罚 函数 bindViewTap: function() { console.log('button clicked') }, onLoad: function () { console.log('onLoad') }})基于wepy的实现:import wepy from 'wepy';export default class Index extends wepy.page { data = { motto: 'Hello World', userInfo: {} }; methods = { bindViewTap () { console.log('button clicked'); } }; onLoad() { console.log('onLoad'); };}2支持组件化开辟 拜见 章节:组件示例代码:// index.wpytemplate view component id="pannel" path="pannel"/component component id="counter1" path="counter"/component component id="counter2" path="counter"/component component id="list" path="list"/component /view/templatescriptimport wepy from 'wepy';import List from '../components/list';import Panel from '../components/panel';import Counter from '../components/counter';export default class Index extends wepy.page { config = { "navigationBarTitleText": "test" }; components = { panel: Panel, counter1: Counter, counter2: Counter, list: List };}/script3支持加载外部NPM包在编译过程当中,会递归遍历代码中的require然后将对应依靠 文件从node_modules当中拷贝出来 ,而且 修改require为相对路径,从而实现对外部NPM包的支持 。4单文件模式,使得目次 布局 更加清楚 官方目次 布局 要求app必须有三个文件app.json,app.js ,app.wxss,页面有4个文件index.json,index.js ,index.wxml,index.wxss。而且文件必须同名。 以是 利用 wepy开辟 前后开辟 目次 对比如 下: 官方DEMO:project pages index index.json index.js index.wxml index.wxss log log.json log.wxml log.js log.wxss app.js app.json app.wxss利用 wepy框架后目次 布局 :project src pages index.wpy log.wpy app.wpy5默认利用 babel编译,支持ES6/7的一些新特性用户可以通过修改.wepyrc设置 文件 ,设置 本身 认识 的babel环境 举行 开辟 。默认开启利用 了一些新的特性如promise,async/await等等。示例代码:import wepy from 'wepy';export default class Index extends wepy.page { getData() { return new Promise((resolve, reject) = { setTimeout(() = { resolve({data: 123}); }, 3000); }); }; async onLoad() { let data = await this.getData(); console.log(data.data); };}6针对原生API举行 优化对如今 API举行 promise处理 惩罚 ,同时修复一些现有API的缺陷 ,比如 :wx.request并发题目 等。 原有代码:onLoad = function () { var self = this; wx.login({ success: function (data) { wx.getUserInfo({ success: function (userinfo) { self.setData({userInfo: userinfo}); } }); } });}基于wepy实当代 码:async onLoad() { await wx.login(); this.userInfo = await wx.getUserInfo();}进阶阐明 :.wepyrc 设置 文件阐明 实行 wepy new demo后,会天生 雷同 设置 文件。{ "wpyExt": ".wpy", "sass": {}, "less": {}, "babel": {}}wpyExt: 缺省值为’.wpy’,IDE默认环境 下不会对此文件范例 高亮 ,此时可以修改全部 文件为.vue后缀(由于 与vue高亮规则一样),然后将此选项修改为.vue,就能办理 部分 IDE代码高亮题目 。 一个.wpy文件分为三个部分 :样式style/style对应原有wxss。模板template/template对应原有wxml。代码script/script对应原有js 。此中 入口文件app.wpy不必要 template,以是 编译时会被忽略。这三个标签都支持type和src属性 ,type决定了其代码编译过程,src决定是否外联代码,存在src属性且有效 时 ,忽略内联代码,示比方 下:style type="less" src="page1.less"/styletemplate type="wxml" src="page1.wxml"/templatescript // some code/script标签对应 type 值如下表所示:标签 type默认值 type支持值style css css,less ,sass(待完成)template wxml wxml,xml,html(待完成)script js js ,TypeScript(待完成)script阐明 程序入口app.wpystyle type="less"/** less **//stylescriptimport wepy from 'wepy';export default class extends wepy.app { config = { "pages":[ "pages/index/index" ], "window":{ "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "WeChat", "navigationBarTextStyle": "black" } }; onLaunch() { console.log(this); }}/script入口app.wpy继承 自wepy.app,包罗 一个config属性和其全局属性、方法 、变乱 。此中 config属性对应原有的app.json,编译时会根据config天生 app.json文件 ,假如 必要 修改config中的内容,请利用 体系 提供API 。页面index.wpystyle type="less"/** less **//styletemplate type="wxml" view /view component id="counter1" path="counter"/component/templatescriptimport wepy form 'wepy';import Counter from '../components/counter';export default class Index extends wepy.page { config = {}; components = {counter1: Counter}; data = {}; methods = {}; events = {}; onLoad() {}; // Other properties}/script页面入口继承 自wepy.page,重要 属性阐明 如下:属性 阐明 config 页面config,相称 于原来的index.json ,同app.wpy中的configcomponents 页面引入的组件列表data 页面必要 渲染的数据methods wmxl的变乱 捕获 ,如bindtap,bindchangeevents 组件之间通过broadcast ,emit转达 的变乱 别的 如onLoad,onReady等小程序变乱 以及别的 自界说 方法与属性组件com.wpystyle type="less"/** less **//styletemplate type="wxml" view /view/templatescriptimport wepy form 'wepy';export default class Com extends wepy.component { components = {}; data = {}; methods = {}; events = {}; // Other properties}/script页面入口继承 自wepy.component,属性与页面属性一样 ,除了不必要 config以及页面特有的一些小程序变乱 等等。组件在小程序中,可以利用 JS模块化 和wxml模板 ,对业务模块举行 分别 ,实现如下结果 :但实际 上差别 的模块代码与变乱 交互都是在同一个页面空间处理 惩罚 的,比如 说 moduleA 和 moduleB 中同时存在一个 add 相应 变乱 时,就必要 在 html 和 js 中分别界说 为 moduleA_add ,moduleB_add。业务模块复杂之后就倒霉 于开辟 和维护 。在wepy中,利用 组件化的特性可以办理 此类题目 ,如下图:ComA 和 ComB中心 的数据与变乱 相互隔离,可以分别拥有本身 的add变乱 。组件引用当页面大概 组件必要 引入子组件时 ,必要 在页面大概 script中的components给组件分配唯一id,而且 在template中添加component标签,如index.wpy。页面和组件都可以引入子组件 ,引入多少 组件后,如下图:Index页面引入A,B ,C三个组件,同时组件A和B又有本身 的子组件D,E ,F,G,H 。组件通讯 与交互wepy.component基类提供三个方法$broadcast ,$emit,$invoke,因此任一页面或任一组件都可以调用上述三种方法实现通讯 与交互,如:$this.$emit('some-event', 1, 2, 3, 4);组件的变乱 监听必要 写在events属性下 ,如:import wepy form 'wepy';export default class Com extends wepy.component { components = {}; data = {}; methods = {}; events = { 'some-event': ($event, ...args) { console.log(`${this.name} receive ${$event.name} from ${$event.source.name}`); } }; // Other properties}$broadcast $broadcast变乱 是由父组件发起,全部 子组件都会收到此广播变乱 ,除非变乱 被手动取消。变乱 广播的次序 为广度优先搜刮 次序 ,如上图,假如 Page_Index发起一个$broadcast变乱 ,那么吸取 到变乱 的先后次序 为:A, B, C, D, E, F, G, H。如下图:$emit $emit与$broadcast恰好 相反 ,变乱 发起组件的父组件会依次吸取 到$emit变乱 ,如上图,假如 E发起一个$emit变乱 ,那么吸取 到变乱 的先后次序 为:A, Page_Index。如下图:$invoke $invoke是一个组件对另一个组件的直接调用,通过传入的组件路径找到相应组件,然后再调用其方法 。 假如 想在Page_Index中调用组件A的某个方法:this.$invoke('ComA', 'someMethod', 'someArgs');假如 想在组件A中调用组件G的某个方法:this.$invoke('./../ComB/ComG', 'someMethod', 'someArgs');数据绑定小程序数据绑定方式小程序通过Page提供的setData方法去绑定命 据 ,如:this.setData({title: 'this is title'});由于 小程序架构本身 缘故起因 ,页面渲染层和JS逻辑层分开的,setData操纵 实际 就是JS逻辑层与页面渲染层之间的通讯 ,那么假如 在同一次运行周期内多次实行 setData操纵 时 ,那么通讯 的次数是一次还是 多次呢?在颠末 与开辟 小程序的同事求证后得知,确实会通讯 多次。wepy数据绑定方式wepy利用 脏数据查抄 对setData举行 封装,在函数运行周期竣事 时实行 脏数据查抄 ,一来可以不消 关心页面多次setData是否会有性能上的题目 ,二来可以更加简便 去修改数据实现绑定,不消 重复去写setData方法。代码如下:this.title = 'this is title';但需留意 ,在函数运行周期之外的函数里去修改数据必要 手动调用$apply方法 。如:setTimeout(() = { this.title = 'this is title'; this.$apply();}, 3000);

微信小程序云开发「 微信小程序云开发后端怎么搭建」 微信小程序云开辟
「 微信小程序云开辟
后端怎么搭建」(微信小程序云开发是什么意思) 网站建设

  www.dashenniu.com

微信小程序云开发「 微信小程序云开发后端怎么搭建」 微信小程序云开辟
「 微信小程序云开辟
后端怎么搭建」(微信小程序云开发是什么意思) 网站建设