小程序项目开发(一)

摘要:
时隔半年,这个小程序项目又开始了它的旅程。现在,让我们对wepy框架进行一系列深入了解,并与原生小程序开发进行比较。变更1.项目文件和目录结构的变更。最后,它成为小程序的官方规则。6、 API和相关入口问题1.程序入口文件应用程序。wpy/**less**/条目文件中的配置对象对应于应用程序的功能。json文件。

小程序项目开发

在时隔半年以后,又开始了小程序之旅。
在它刚开始出现的时候,只是简单的做了 技术预研的工作。
现在 又回到 原点,发现变化已经很大了

之前的开发过程的体验不是很友好,在写完 代码之后依然需要手动刷新,
文件夹中 存放的文件 繁杂、容易让新手混乱。

现在,为了满足开发环境的需要 wepy 这个框架就出现了。

现在,我们对于 wepy 这个框架进行一系列的深入了解,

并同原生的 小程序开发做一个对比。

看看 新框架开发体验如何? 

变化一、 项目的 文件 以及目录结构的变化。

1. 在原生的小程序的开发过程中,它的目录结构是这样的

project
├── pages
|   ├── index
|   |   ├── index.json  index 页面配置
|   |   ├── index.js    index 页面逻辑
|   |   ├── index.wxml  index 页面结构
|   |   └── index.wxss  index 页面样式表
|   └── log
|       ├── log.json    log 页面配置
|       ├── log.wxml    log 页面逻辑
|       ├── log.js      log 页面结构
|       └── log.wxss    log 页面样式表
├── app.js              小程序逻辑
├── app.json            小程序公共设置
└── app.wxss            小程序公共样式表


在 wepy 这个框架中的 目录结构,是这样的

project
└── src
    ├── pages
    |   ├── index.wpy    index 页面配置、结构、样式、逻辑
    |   └── log.wpy      log 页面配置、结构、样式、逻辑
    └──app.wpy           小程序配置项(全局样式配置、声明钩子等)


是不是 很类似于 vue 的 .vue 文件? 意不意外?

变化二、 默认使用 babel编译, 那么就是支持 ES6/7 的新特性。

app.wpy 文件

import wepy form 'wepy'

export default class extends wepy.app {
    config = {
        pages: [
            'pages/index'
        ],
        window: {
            backgroundTextStyle: 'light',
            navigationBarBackgroundColor: '#fff',
            navigationBarTitleText: 'WeChat',
            navigationBarTextStyle: 'black'
        }
    }

    async testAsync () {
        const data = await this.sleep(3)
        console.log(data)
    }
}

三、支持组件化开发。

组件的代码同 页面的代码

components.wpy

<template>
    <view>
        <panel>test</panel>
    </view>
</template>

<script>

    import wepy from 'wepy'

    export default class Components extends wepy.component {
        components = {
            child: Child
        }
    }
</script>

这里需要强调一点,这个同 vuejs 的开发模式太像了。

建议,如果没有 vuejs 开发经验的同学,先去使用下 vuejs 来开发

再回来看这个框架你会非常爽的。

四、 关于 wepy.config.js 配置说明

看到 这个 文件的 命名方式,内心一惊,这不就是 webpack.config.js 嘛

然后带着这个疑问 回到 查看 wepy.config.js 文件内容

    module.exports = {
        'output': 'dist',
        'source': 'src'
         ...
    }

 这简直就是 webpack 的翻版嘛,搞定这个配置。 我们继续往下看

五、为什么能实现这么一个功能?

我们先来看一个图

小程序项目开发(一)第1张

我觉得 这个框架的作者是讲 webpack 的构建工具 理解的很透彻,拆分, 合并。

组装,压缩等等。 最后成为 小程序官方规定的样子。

六、API 以及相关 入口问题

一、程序入口文件 app.wpy

<style lang="less">
/** less **/
</style>
<script>
import 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>

入口文件中的 config 对象,对应着 原生小程序中的  app.json 文件的功能一模一样。

然后 app.wpy 继承自 wepy.app




二、页面 文件 index.wpy

<style lang="less">
/** less **/
</style>
<template lang="wxml">
    <view>
    </view>
    <counter1></counter1>
</template>
<script>
import 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>

这个是 页面的 具体文件, 其中  index.wpy 继承自 wepy.page 这个对象


那这个页面中的 属性 (钩子) api 具体有哪些?
属性说明
config页面config,相当于原来的index.json,同app.wpy中的config
components页面引入的组件列表
data页面需要渲染的数据
methodswmxl的事件捕捉,如bindtap,bindchange
events组件之间通过broadcast,emit传递的事件
其它如onLoad,onReady等小程序事件以及其它自定义方法与属性
三、组件文件  components.wpy

<style lang="less">
/** less **/
</style>
<template lang="wxml">
    <view>  </view>
</template>
<script>
import wepy form 'wepy';
export default class Com extends wepy.component {

    components = {};

    data = {};
    methods = {};

    events = {};
    // Other properties
}
</script>

组件的 页面入口是 继承自  wepy.component, 其 属性和页面属性是 一样的,除了不要 config 对象, 和 页面特有的 一些小程序 事件等。

七、接下来就是 踩坑阶段啦~ , 先踩为敬!!!

八、下面是小程序开发的一个群,欢迎加入。

小程序项目开发(一)第2张

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mysql运维管理-Mysql增量备份及分库分表备份数据恢复实战12eclipse 3.6.1 安装maven插件失败的解决办法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

git 给远程库 添加多个url地址

 目录[-] 前提 使用流程 原理解析 注意 Other 参考文章 作者:shede333主页:http://my.oschina.net/shede333 && http://blog.sina.com.cn/u/1509658847版权声明:原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | [Creative Commo...

微慕WordPress小程序专业版v2.0

不经意间,微慕专业版发布已经过去一年了,微慕开源版的推出也有两年半了。2017年5月间,我花了2天时间,用WordPress插件做后端,写了个微信小程序,并开源到github(截至2019年10月14日,star数目为1.4k),利用业余时间不断完善,让我没想到的是,由当初简陋的几百行代码程序,现在已经是20000多行代码(包括插件和小程序)的小型软件产品...

百度UEditor上传图片-再再总结一次

本周,CSDN有个网友遇到了百度UEditor上传问题,最后商定付50元钱,我帮他解决这个问题。    他最初想自己搞定这个问题,结果搞了好多次,好几天,还是没能解决。    2015年1月17日8:25~2015年1月18日00:24,4个小时终于搞定了这个问题。 1.总的感悟    本来预计1个小时,就能解决的,结果硬是花费了4个小时,挺无奈的。 虽说...

android WIFI的一些属性

package com.example.wifitest; import java.util.List; import android.content.Context; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android....

tf.Session()函数的参数应用(tensorflow中使用tf.ConfigProto()配置Session运行参数&amp;amp;&amp;amp;GPU设备指定)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/dcrmg/article/details/79091941 tf.ConfigProto()函数用在创建session的时候,用来对session进行参数配置: config = tf.Config...

Linux 配置gitee

安装好git后, 如何配置连接至gitee ?首先, 需要在官网注册一个gitee账号, 然后进行以下配置步骤: 1. 设置账号 $ git config --global user.name "your name" 2. 设置邮箱 $ git config --global user.email "your email" 3. 生成密钥 $ ssh-...