zoukankan      html  css  js  c++  java
  • 小程序项目开发(一)

    小程序项目开发

    在时隔半年以后,又开始了小程序之旅。
    在它刚开始出现的时候,只是简单的做了 技术预研的工作。
    现在 又回到 原点,发现变化已经很大了
    
    之前的开发过程的体验不是很友好,在写完 代码之后依然需要手动刷新,
    文件夹中 存放的文件 繁杂、容易让新手混乱。
    
    现在,为了满足开发环境的需要 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 的翻版嘛,搞定这个配置。 我们继续往下看
    

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

    我们先来看一个图
    

    我觉得 这个框架的作者是讲 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 页面需要渲染的数据
    methods wmxl的事件捕捉,如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 对象, 和 页面特有的 一些小程序 事件等。
    

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

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

  • 相关阅读:
    MySQL插入数据慢解决办法
    java的 System.currentTimeMillis() 与时区
    单元测试断言系统 类似于 生活中如何说话
    IDEA、Eclipse 默认常用快捷键对比总结,visual studio快捷键总结
    使用过的正则匹配的例子
    filters的this问题
    vuex的使用
    offset/scroll/clien系列知识点
    promise对象的理解
    语义化标签的理解
  • 原文地址:https://www.cnblogs.com/erbingbing/p/7086212.html
Copyright © 2011-2022 走看看