HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

uni-app-tempalte 我自己做了一个项目的快速开发模版

技术分享 uniapp插件 uniapp uniCloud

uni-app-templated

项目地址

当时做这个的目的是为了解决如下问题:

  • 1.云函数分散过后冷启动和热启动效率上的巨大差别
  • 2.云函数环境变量的支持,大多数项目都会用到环境变量的配置
    • 由于web的启动是xhbuilder控制的,导致我无法把环境变量植入,需要xhbuilder团队支持。
  • 3.云函数的打包压缩上传
  • 4.本地云函数开发依赖关系,代码检测,如果又需要自己可以集成eslint做代码规范
    • 这块在webpack.config.js中自己可以去配置
  • 4.web开发的时候本地数据mock的支持
    • 这一块写的比较搓,web端由于没有环境变量,我这边数据mock切换需要手动,在App.vue把ajaxMock/ajax 2个方法之间手动切换
  • 5.统一封装的ajax方法,做到格式统一。
  • 6.在web端App.vue直接封装ajax请求,做到页面只要调用处理正确的分之,异常等都统一捕获。

我也不知道接口这块设计的对不对,下面是我的思路。

  • 由于入口函数只有一个函数,所有在函数里面要根据传入的变量去执行不通的方法。
  • 拆解了原来它云公共函数的功能,我觉得打包云公共函数优点xx,而且你云函数打包的时候还是依赖于你本地的云共函数,只不过云公共函数发布可以同步已经依赖的云函数,我觉得有点没用。
  • 我目前构造的是如下

    uniCloud  
    .callFunction({  
        name: name,  
        data: {  
            type: type,  
            form: data  
        }  
    })  
    
    将原来传入的data放置到data的内容,form字段中,然后type 表示实际调用的方法,具体可以查阅App.vue,然后把返回结果统一的封装处理了下  
    
    // 这块我还没想好要怎么去实现,目前就简易贴下这个。  
    async function main(event) {  
        let env = process.env.NODE_ENV  
        if (!event.type) {  
            return ajaxReturn('', -1, '参数传入不正确');  
        }  
    
        if (!dome[event.type]) {  
            return ajaxReturn('', -1, '未找到云方法');  
        }  
        return await dome[event.type](event)  
    }  
    
    // 固定返回的main,这边无需修改,云函数入口只有唯一的一个。  
    export {  
        main  
    }

具体功能开发参考文档地址

uniapp官网

项目目录说明

cloudfunctions-dev

main.js入口函数

config

conf.dev.js 开发环境变量配置

conf.prod.js 打包环境变量配置

mock

index.js 数据mock配置文件 具体实现可以参考mocker-api

pages 常规开发页面

static 常规静态资源目录

.babelrc babel7 废弃。

main.js ,manifest.json,uni.scss,pages.json 常规开发页面

package.json 依赖配置

template.h5.html 打包h5的时候用到的页面模版

template.unicloud.html 调试开发模式云函数报错页面,需要在控制台查看(这块到时候完善在页面直接可以查看)

项目功能说明(使用命令)

npm run dev

  • 项目启动云函数本地调试模式,因为无法连接DB,所以这块一般用来做代码调试,依赖关系检测,配合eslint可以做到代码规范检测,变量使用情况,等。
  • 运行命令后,web端同时开启数据mock模式, web里面开发直接可以请求到mock接口,如果不需要mock,App.vue对调下ajax/ajaxMock

npm run build

  • 云函数打包,目前在config.js就配置了1个index,如果需要支持多文件的话,手动配置
    entry: {  
        index: ['./cloudfunctions-dev/main.js']  
        xxxx: ['./cloudfunctions-dev/xxxx.js']  
    },
  • 打包是product模式,代码回进行压缩,这块遵循webpack打包策略

项目版本管理

v1.0.1

  • 搭建初始化版本
  • 待做内容
    • 1.云函数DB的数据模拟,把数据mock这块跟db的数据返回关联起来,模拟db后可以本地调用接口
    • 2.公共方法的拓展,吧一些token的调用,加解密等公共方法封装起来。
待做内容 预计版本 预计完成版本/时间
云函数DB的数据模拟 v1.0.2 v1.0.3
云函数的本地调用 v1.0.2 v1.0.4
小程序服务端api封装 v1.0.2 v1.0.2
继续阅读 »

uni-app-templated

项目地址

当时做这个的目的是为了解决如下问题:

  • 1.云函数分散过后冷启动和热启动效率上的巨大差别
  • 2.云函数环境变量的支持,大多数项目都会用到环境变量的配置
    • 由于web的启动是xhbuilder控制的,导致我无法把环境变量植入,需要xhbuilder团队支持。
  • 3.云函数的打包压缩上传
  • 4.本地云函数开发依赖关系,代码检测,如果又需要自己可以集成eslint做代码规范
    • 这块在webpack.config.js中自己可以去配置
  • 4.web开发的时候本地数据mock的支持
    • 这一块写的比较搓,web端由于没有环境变量,我这边数据mock切换需要手动,在App.vue把ajaxMock/ajax 2个方法之间手动切换
  • 5.统一封装的ajax方法,做到格式统一。
  • 6.在web端App.vue直接封装ajax请求,做到页面只要调用处理正确的分之,异常等都统一捕获。

我也不知道接口这块设计的对不对,下面是我的思路。

  • 由于入口函数只有一个函数,所有在函数里面要根据传入的变量去执行不通的方法。
  • 拆解了原来它云公共函数的功能,我觉得打包云公共函数优点xx,而且你云函数打包的时候还是依赖于你本地的云共函数,只不过云公共函数发布可以同步已经依赖的云函数,我觉得有点没用。
  • 我目前构造的是如下

    uniCloud  
    .callFunction({  
        name: name,  
        data: {  
            type: type,  
            form: data  
        }  
    })  
    
    将原来传入的data放置到data的内容,form字段中,然后type 表示实际调用的方法,具体可以查阅App.vue,然后把返回结果统一的封装处理了下  
    
    // 这块我还没想好要怎么去实现,目前就简易贴下这个。  
    async function main(event) {  
        let env = process.env.NODE_ENV  
        if (!event.type) {  
            return ajaxReturn('', -1, '参数传入不正确');  
        }  
    
        if (!dome[event.type]) {  
            return ajaxReturn('', -1, '未找到云方法');  
        }  
        return await dome[event.type](event)  
    }  
    
    // 固定返回的main,这边无需修改,云函数入口只有唯一的一个。  
    export {  
        main  
    }

具体功能开发参考文档地址

uniapp官网

项目目录说明

cloudfunctions-dev

main.js入口函数

config

conf.dev.js 开发环境变量配置

conf.prod.js 打包环境变量配置

mock

index.js 数据mock配置文件 具体实现可以参考mocker-api

pages 常规开发页面

static 常规静态资源目录

.babelrc babel7 废弃。

main.js ,manifest.json,uni.scss,pages.json 常规开发页面

package.json 依赖配置

template.h5.html 打包h5的时候用到的页面模版

template.unicloud.html 调试开发模式云函数报错页面,需要在控制台查看(这块到时候完善在页面直接可以查看)

项目功能说明(使用命令)

npm run dev

  • 项目启动云函数本地调试模式,因为无法连接DB,所以这块一般用来做代码调试,依赖关系检测,配合eslint可以做到代码规范检测,变量使用情况,等。
  • 运行命令后,web端同时开启数据mock模式, web里面开发直接可以请求到mock接口,如果不需要mock,App.vue对调下ajax/ajaxMock

npm run build

  • 云函数打包,目前在config.js就配置了1个index,如果需要支持多文件的话,手动配置
    entry: {  
        index: ['./cloudfunctions-dev/main.js']  
        xxxx: ['./cloudfunctions-dev/xxxx.js']  
    },
  • 打包是product模式,代码回进行压缩,这块遵循webpack打包策略

项目版本管理

v1.0.1

  • 搭建初始化版本
  • 待做内容
    • 1.云函数DB的数据模拟,把数据mock这块跟db的数据返回关联起来,模拟db后可以本地调用接口
    • 2.公共方法的拓展,吧一些token的调用,加解密等公共方法封装起来。
待做内容 预计版本 预计完成版本/时间
云函数DB的数据模拟 v1.0.2 v1.0.3
云函数的本地调用 v1.0.2 v1.0.4
小程序服务端api封装 v1.0.2 v1.0.2
收起阅读 »

通过vue-cli3.0创建uni-app项目中使用sass的css预编译的,node-sass一直安装不下来的问题

uni-app项目提供了两种方式创建工程,一种是HBuilderX创建工程,另一种是通过vue-cli脚手架的方式创建uni-app工程项目(相关链接:https://uniapp.dcloud.io/quickstart)。

使用vue-cli脚手架创建uni-app项目,在项目中使用sass预编译时,会安装不下的问题

如一直安装不下,是因为vue-cli3.0默认使用yarn包管理工具而不是原来的npm,yarn中node-sass,需要翻墙的。如果你不翻墙,默认下载极大可能会失的哦!

先执行:

1、npm uninstall node-sass(前提是第一安装失败后,如果没有执行这个,就免了)作用:

后执行:

1、npm install -g cnpm --registry=https://registry.npm.taobao.org (安装淘宝镜像)

2、cnpm install node-sass --save 或者 cnpm install node-sass

继续阅读 »

uni-app项目提供了两种方式创建工程,一种是HBuilderX创建工程,另一种是通过vue-cli脚手架的方式创建uni-app工程项目(相关链接:https://uniapp.dcloud.io/quickstart)。

使用vue-cli脚手架创建uni-app项目,在项目中使用sass预编译时,会安装不下的问题

如一直安装不下,是因为vue-cli3.0默认使用yarn包管理工具而不是原来的npm,yarn中node-sass,需要翻墙的。如果你不翻墙,默认下载极大可能会失的哦!

先执行:

1、npm uninstall node-sass(前提是第一安装失败后,如果没有执行这个,就免了)作用:

后执行:

1、npm install -g cnpm --registry=https://registry.npm.taobao.org (安装淘宝镜像)

2、cnpm install node-sass --save 或者 cnpm install node-sass

收起阅读 »

mac连接不上iphone不是线的问题 解决办法

打开MAC终端,输入下面的命令:

sudo killall -STOP -c usbd

打开MAC终端,输入下面的命令:

sudo killall -STOP -c usbd

Mac下载最新版HbuildX 内置浏览器无法审查元素, 空白的

[内容]

重现步骤

[步骤] Mac下载最新版HbuildX 内置浏览器无法审查元素, 空白的
图片和日志在附件

IDE运行环境说明

[IDE版本号] 2.6.16.20200424

[windows版本号]

[mac版本号] 10.15.4

继续阅读 »

[内容]

重现步骤

[步骤] Mac下载最新版HbuildX 内置浏览器无法审查元素, 空白的
图片和日志在附件

IDE运行环境说明

[IDE版本号] 2.6.16.20200424

[windows版本号]

[mac版本号] 10.15.4

收起阅读 »

模拟器调用本地服务器接口报{"errMsg":"request:fail abort statusCode:-1"}

模拟器调用本地服务器接口报{"errMsg":"request:fail abort statusCode:-1"}
是使用127.0.0.1 本地回环地址,修改为本机ipv4地址解决

模拟器调用本地服务器接口报{"errMsg":"request:fail abort statusCode:-1"}
是使用127.0.0.1 本地回环地址,修改为本机ipv4地址解决

关于事件的stop属性

事件透传

请问如何动态控制stop属性, 即一定条件下允许冒泡, 一定条件下不允许冒泡?

请问如何动态控制stop属性, 即一定条件下允许冒泡, 一定条件下不允许冒泡?

微信小程序背景图不显示 / 小程序背景图转码base64

微信小程序

微信小程序设置设置本地背景图,大于40kb时需要手动转换成base64显示。

    computed: {  
        base64PageImg: function() {  
            let that = this;  
            let base64Img = uni.getFileSystemManager().readFileSync(that.pageImg, "base64");//转码  
            return 'data:image/png;base64,' + base64Img//拼接后返回  
        }  
    },
继续阅读 »

微信小程序设置设置本地背景图,大于40kb时需要手动转换成base64显示。

    computed: {  
        base64PageImg: function() {  
            let that = this;  
            let base64Img = uni.getFileSystemManager().readFileSync(that.pageImg, "base64");//转码  
            return 'data:image/png;base64,' + base64Img//拼接后返回  
        }  
    },
收起阅读 »

HBuilder搭建php环境,运行预览 最新教程

PHP

百度下载 php集成环境:phpstudy

比如:集成环境工具安装在这路径:C:\phpstudy_pro

菜单栏 左边 环境.安装好php插件

然后在工具首页,点击 一键启动:WNMP启动


然后在HBuilder工具里面顶部----运行---运行到浏览器---配置web服务器
设置:外部浏览器调用url:
http://127.0.0.1:80
(上面这个网址,端口 一般默认是这样.或者自己看看对比phpstudy集成环境工具的参数.)


再然后:
HBuilder工具里面顶部---文件----导入-----从本地目录导入:在集成环境安装目录里面选中网站的目录:C:\phpstudy_pro\WWW

然后在C:\phpstudy_pro\WWW 这个目录里面新建一个2.php文件.
然后刷新HBuilder,就编辑2.php这个文件.就可以预览了.

详细教程我也发在这里:https://jingyan.baidu.com/article/1612d500676ccfa30e1eee95.html

上面是我一次用,乱撞成功的.不保证成功.

继续阅读 »

百度下载 php集成环境:phpstudy

比如:集成环境工具安装在这路径:C:\phpstudy_pro

菜单栏 左边 环境.安装好php插件

然后在工具首页,点击 一键启动:WNMP启动


然后在HBuilder工具里面顶部----运行---运行到浏览器---配置web服务器
设置:外部浏览器调用url:
http://127.0.0.1:80
(上面这个网址,端口 一般默认是这样.或者自己看看对比phpstudy集成环境工具的参数.)


再然后:
HBuilder工具里面顶部---文件----导入-----从本地目录导入:在集成环境安装目录里面选中网站的目录:C:\phpstudy_pro\WWW

然后在C:\phpstudy_pro\WWW 这个目录里面新建一个2.php文件.
然后刷新HBuilder,就编辑2.php这个文件.就可以预览了.

详细教程我也发在这里:https://jingyan.baidu.com/article/1612d500676ccfa30e1eee95.html

上面是我一次用,乱撞成功的.不保证成功.

收起阅读 »

请教下:微信小程序实现Session功能及无法获取session问题 服务端是thinkphp5

uni.request({
url: getApp().globalData.apiurl + '/getHomeList',
header: {
'content-type': 'application/json',
'cookie':''+uni.getStorageSync('session_id'),
},
......

继续阅读 »

uni.request({
url: getApp().globalData.apiurl + '/getHomeList',
header: {
'content-type': 'application/json',
'cookie':''+uni.getStorageSync('session_id'),
},
......

收起阅读 »

使用onReachBottom做上拉加载的时候一定要先在页面的data里面预先赋值,否则无法渲染

上拉加载
            return {  
                data_0:[],  
                data_1:[],  
                data_2:[],  
这里一定先把上拉刷新的时候的数据先放在这里。  
否则后面渲染不出第二页
            return {  
                data_0:[],  
                data_1:[],  
                data_2:[],  
这里一定先把上拉刷新的时候的数据先放在这里。  
否则后面渲染不出第二页

hbuiderX简单白色主题(倩女幽魂)

主题

{
"editor.fontSize" : 14,
"editor.minimap.enabled" : false,
"explorer.iconTheme" : "vs-seti",
"workbench.colorCustomizations" : {
"[Default]" : {
"editor.background" : "#fefefe",
"explorer.file.status.modified" : "#999999",
"explorer.file.status.untracked" : "#8a7a1a",
"list.activeSelectionBackground" : "#f2f2f2",
"list.activeSelectionForeground" : "#ea5087",
"list.foreground" : "#555555",
"list.highlightForeground" : "#ea5087",
"list.hoverBackground" : "#f2f2f2",
"sideBar.background" : "#ece1e3",
"statusBar.background" : "#1f6fb5",
"statusBar.foreground" : "#cccccc",
"tab.activeBackground" : "#c5bcbd",
"tab.inactiveBackground" : "#f2f2f2",
"tab.inactiveForeground" : "#666666",
"toolBar.background" : "#ffffff"
}
}
}

继续阅读 »

{
"editor.fontSize" : 14,
"editor.minimap.enabled" : false,
"explorer.iconTheme" : "vs-seti",
"workbench.colorCustomizations" : {
"[Default]" : {
"editor.background" : "#fefefe",
"explorer.file.status.modified" : "#999999",
"explorer.file.status.untracked" : "#8a7a1a",
"list.activeSelectionBackground" : "#f2f2f2",
"list.activeSelectionForeground" : "#ea5087",
"list.foreground" : "#555555",
"list.highlightForeground" : "#ea5087",
"list.hoverBackground" : "#f2f2f2",
"sideBar.background" : "#ece1e3",
"statusBar.background" : "#1f6fb5",
"statusBar.foreground" : "#cccccc",
"tab.activeBackground" : "#c5bcbd",
"tab.inactiveBackground" : "#f2f2f2",
"tab.inactiveForeground" : "#666666",
"toolBar.background" : "#ffffff"
}
}
}

收起阅读 »