HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

小程序开发需求,找公司或工作室首次开发和长期维护

外包

微信小程序开发需求,前端+运营端+服务器端
前端uniapp,运营管理端H5, 后端uniCloud/或其他nodejs框架
找公司或工作室首次开发,前端页面完成了大概70%,需要按照功能/页面细化及对接后端,并完成未完成的页面部分。后端未有,可使用uniCloud-admin。
首次开发后,可合作长期维护迭代,因此需要稳定的公司或者工作室。

具体需求见附件。
有合适的公司或工作室请留下联系方式或email到618457@qq.com。

继续阅读 »

微信小程序开发需求,前端+运营端+服务器端
前端uniapp,运营管理端H5, 后端uniCloud/或其他nodejs框架
找公司或工作室首次开发,前端页面完成了大概70%,需要按照功能/页面细化及对接后端,并完成未完成的页面部分。后端未有,可使用uniCloud-admin。
首次开发后,可合作长期维护迭代,因此需要稳定的公司或者工作室。

具体需求见附件。
有合适的公司或工作室请留下联系方式或email到618457@qq.com。

收起阅读 »

android 和 ios app 打开唤起支付宝支付就差个s,无语...

                        var alipay=this.iosOrAndroid()?'alipay':'alipays'  
                            plus.runtime.openURL(alipay+"://platformapi/startapp?appId=20000067&url=" +  
                                encodeURIComponent(this.shareUrl('/pages/index/payMember1?record_id='+res.data.record_id+'&level='+this.parmar.level+'&days='+this.parmar.days)))  
继续阅读 »
                        var alipay=this.iosOrAndroid()?'alipay':'alipays'  
                            plus.runtime.openURL(alipay+"://platformapi/startapp?appId=20000067&url=" +  
                                encodeURIComponent(this.shareUrl('/pages/index/payMember1?record_id='+res.data.record_id+'&level='+this.parmar.level+'&days='+this.parmar.days)))  
收起阅读 »

uni.chooseimage出现的选择相册内容页面上面的按钮,无法自定义颜色,都是绿色的

uni.chooseimage出现的选择相册内容页面上面的按钮,无法自定义颜色,都是绿色的

uni.chooseimage出现的选择相册内容页面上面的按钮,无法自定义颜色,都是绿色的

uni-app-x webview组件不支持获取网页内容解决方案

Webview uni-app-x

问题

uni-app-x的webview组件貌似少了很多的接口,其中就包括获取网页信息,包括dom节点等等

思路

当webview加载完毕之后使用webview上下文向页面注入uni.webview.1.5.5.js代码,然后再注入一段操作dom的js代码,并将结果通过postmessage接口传回uts。话不多说,直接上代码

<template>  
    <web-view id="web-view" :src="url" :webview-styles="styles" @load="Load" @message="Message"></web-view>  
</template>  

<script>  
    let fs = uni.getFileSystemManager()  
    export default {  
        data() {  
            return {  
                url: '',  
                src: '',  
                styles: { progress: { color: "#07C160" } },  
                webviewContext: null as WebviewContext | null,  
                javascriptString: `  
                !function(document) {  
                    var title = document.title;  
                    uni.webView.postMessage({  
                        data: {  
                            documentTitle: title  
                        }  
                    })  
                }(document)  
                `  
            };  
        },  
        onLoad(options : OnLoadOptions) {  
            // 接受url参数  
            this.url = options["url"] ?? ""  
        },  
        onReady() {  
            // 创建webview上下文对象  
            this.webviewContext = uni.createWebviewContext('web-view', this)  
        },  
        methods: {  
            Load(e : UniWebViewLoadEvent) {  
                // 页面重新加载时获取页面链接地址  
                this.src = e.detail.src  
                // 读取库文件内容  
                fs.readFile({  
                    encoding: 'utf-8',  
                    filePath: '/hybrid/html/uni.webview.1.5.5.js',  
                    success: (res : ReadFileSuccessResult) => {  
                        // 将库文件代码和执行代码注入到网页  
                        this.webviewContext?.evalJS(res.data + this.javascriptString)  
                    }  
                } as ReadFileOptions)  
            },  
            // 接收网页传入的消息  
            Message(e : UniWebViewMessageEvent) {  
                let documentTitle = e.detail.data[0]['documentTitle'] as string  
                if (documentTitle == '') {  
                    documentTitle = this.src  
                }  
                // 设置网页标题  
                uni.setNavigationBarTitle({  
                    title: documentTitle  
                })  
            }  

        }  
    }  
</script>  

<style lang="scss">  

</style>
继续阅读 »

问题

uni-app-x的webview组件貌似少了很多的接口,其中就包括获取网页信息,包括dom节点等等

思路

当webview加载完毕之后使用webview上下文向页面注入uni.webview.1.5.5.js代码,然后再注入一段操作dom的js代码,并将结果通过postmessage接口传回uts。话不多说,直接上代码

<template>  
    <web-view id="web-view" :src="url" :webview-styles="styles" @load="Load" @message="Message"></web-view>  
</template>  

<script>  
    let fs = uni.getFileSystemManager()  
    export default {  
        data() {  
            return {  
                url: '',  
                src: '',  
                styles: { progress: { color: "#07C160" } },  
                webviewContext: null as WebviewContext | null,  
                javascriptString: `  
                !function(document) {  
                    var title = document.title;  
                    uni.webView.postMessage({  
                        data: {  
                            documentTitle: title  
                        }  
                    })  
                }(document)  
                `  
            };  
        },  
        onLoad(options : OnLoadOptions) {  
            // 接受url参数  
            this.url = options["url"] ?? ""  
        },  
        onReady() {  
            // 创建webview上下文对象  
            this.webviewContext = uni.createWebviewContext('web-view', this)  
        },  
        methods: {  
            Load(e : UniWebViewLoadEvent) {  
                // 页面重新加载时获取页面链接地址  
                this.src = e.detail.src  
                // 读取库文件内容  
                fs.readFile({  
                    encoding: 'utf-8',  
                    filePath: '/hybrid/html/uni.webview.1.5.5.js',  
                    success: (res : ReadFileSuccessResult) => {  
                        // 将库文件代码和执行代码注入到网页  
                        this.webviewContext?.evalJS(res.data + this.javascriptString)  
                    }  
                } as ReadFileOptions)  
            },  
            // 接收网页传入的消息  
            Message(e : UniWebViewMessageEvent) {  
                let documentTitle = e.detail.data[0]['documentTitle'] as string  
                if (documentTitle == '') {  
                    documentTitle = this.src  
                }  
                // 设置网页标题  
                uni.setNavigationBarTitle({  
                    title: documentTitle  
                })  
            }  

        }  
    }  
</script>  

<style lang="scss">  

</style>
收起阅读 »

zui-svg-icon自动生成icon

做了个监听文件改动的webpack插件,监听 /assets/svg-icons 下的文件改动,自动执行 npm run svgicon

就不用每次新增icon都跑一遍脚本

文件一: 根目录下创建:build/icon-watcher.js

const fs = require('fs');  
const path = require('path');  
const {  
    exec  
} = require('child_process');  

let timer = null;  

const watchDir = path.resolve(__dirname, '../assets/svg-icons');  
const projectRoot = path.resolve(__dirname, '../');  

class IconWatcherPlugin {  
    apply(compiler) {  
        compiler.hooks.afterEmit.tap('IconWatcherPlugin', () => {  
            console.log('zui-svg-icon 开始监听/assets/svg-icons文件改动')  
            fs.watch(watchDir, {  
                recursive: true  
            }, (eventType, filename) => {  
                if (filename) {  

                    if (timer) {  
                        clearTimeout(timer);  
                    }  
                    timer = setTimeout(() => {  
                        console.log(`zui-svg-icon 改动类型: ${eventType}`);  
                        console.log(`zui-svg-icon 文件名: ${filename}`);  
                        exec('npm run svgicon', {  
                            cwd: projectRoot  
                        }, (error, stdout, stderr) => {  
                            if (error) {  
                                console.error(`zui-svg-icon  exec error: ${error}`);  
                                console.error(`zui-svg-icon  stderr: ${stderr}`);  
                                return;  
                            }  
                            console.log(`zui-svg-icon stdout: ${stdout}`);  
                        });  
                    }, 500)  
                }  
            });  

        });  
    }  
}  

module.exports = IconWatcherPlugin;

vue.config.js中引入

javascript  

const IconWatcherPlugin = require('./build/icon-watcher');  

module.exports = {  
        // ....   
    configureWebpack: {  
        plugins: [new IconWatcherPlugin()],  
    }  
}

package.json中配置脚本

json  

{  

    "scripts": {  
        "svgicon": "node ./uni_modules/zui-svg-icon/tools/generate-svg-icon.js"  
    }  
}
继续阅读 »

做了个监听文件改动的webpack插件,监听 /assets/svg-icons 下的文件改动,自动执行 npm run svgicon

就不用每次新增icon都跑一遍脚本

文件一: 根目录下创建:build/icon-watcher.js

const fs = require('fs');  
const path = require('path');  
const {  
    exec  
} = require('child_process');  

let timer = null;  

const watchDir = path.resolve(__dirname, '../assets/svg-icons');  
const projectRoot = path.resolve(__dirname, '../');  

class IconWatcherPlugin {  
    apply(compiler) {  
        compiler.hooks.afterEmit.tap('IconWatcherPlugin', () => {  
            console.log('zui-svg-icon 开始监听/assets/svg-icons文件改动')  
            fs.watch(watchDir, {  
                recursive: true  
            }, (eventType, filename) => {  
                if (filename) {  

                    if (timer) {  
                        clearTimeout(timer);  
                    }  
                    timer = setTimeout(() => {  
                        console.log(`zui-svg-icon 改动类型: ${eventType}`);  
                        console.log(`zui-svg-icon 文件名: ${filename}`);  
                        exec('npm run svgicon', {  
                            cwd: projectRoot  
                        }, (error, stdout, stderr) => {  
                            if (error) {  
                                console.error(`zui-svg-icon  exec error: ${error}`);  
                                console.error(`zui-svg-icon  stderr: ${stderr}`);  
                                return;  
                            }  
                            console.log(`zui-svg-icon stdout: ${stdout}`);  
                        });  
                    }, 500)  
                }  
            });  

        });  
    }  
}  

module.exports = IconWatcherPlugin;

vue.config.js中引入

javascript  

const IconWatcherPlugin = require('./build/icon-watcher');  

module.exports = {  
        // ....   
    configureWebpack: {  
        plugins: [new IconWatcherPlugin()],  
    }  
}

package.json中配置脚本

json  

{  

    "scripts": {  
        "svgicon": "node ./uni_modules/zui-svg-icon/tools/generate-svg-icon.js"  
    }  
}
收起阅读 »

仿抖音短视频上下滑动视频组件分享

列表流畅滑动 微信小程序 短视频

分享短视频小程序上下滑动组件,支持微信小程序,抖音小程序,h5端,APP端。喜欢的小伙伴们下载使用,仅提供前端组件。

分享短视频小程序上下滑动组件,支持微信小程序,抖音小程序,h5端,APP端。喜欢的小伙伴们下载使用,仅提供前端组件。

现在插件广告收入低的过分了吧

现在插件广告收入低的过分了吧。哪怕是新上线的插件,每条广告的平均收入仅在3分啊

现在插件广告收入低的过分了吧。哪怕是新上线的插件,每条广告的平均收入仅在3分啊

hbuilderx开发的app获取公钥和MD5的方法

app备案

阿里云提示需要安装jadx-gui和使用mac来获取app的公钥和MD5这些信息。

这样就比较麻烦了,使用uniapp开发就是为了跨系统开发,假如还需要mac或jadx-gui,就不灵活了。

所以这里建议使用下面方式来获取公钥和md5值

ios查询方法:

https://www.yunedit.com/iosmd5

android查询方法:

https://www.yunedit.com/androidmd5​​​​​​

继续阅读 »

阿里云提示需要安装jadx-gui和使用mac来获取app的公钥和MD5这些信息。

这样就比较麻烦了,使用uniapp开发就是为了跨系统开发,假如还需要mac或jadx-gui,就不灵活了。

所以这里建议使用下面方式来获取公钥和md5值

ios查询方法:

https://www.yunedit.com/iosmd5

android查询方法:

https://www.yunedit.com/androidmd5​​​​​​

收起阅读 »

在global.scss文件中使用scss变量无效??

scss

在scss文件中使用scss变量无效??
经测试,在App端无效果,但是在Web中可以生效

但是在app.vue文件中使用可以生效

在uni.scss文件导入variables.scss和通过脚手架配置都不生效

继续阅读 »

在scss文件中使用scss变量无效??
经测试,在App端无效果,但是在Web中可以生效

但是在app.vue文件中使用可以生效

在uni.scss文件导入variables.scss和通过脚手架配置都不生效

收起阅读 »

关于map组件绘制markers,polyline可能会出现重绘的问题

地图 map

当前遇到在绘制markers,polyline之后,地图会闪动并且只显示设置的经纬度点,这个有可能是某些代码逻辑涉及到了地图绘制,导致地图多次重绘.所以需要检查这部分的代码,保证地图只需要重绘一次即可.

当前遇到在绘制markers,polyline之后,地图会闪动并且只显示设置的经纬度点,这个有可能是某些代码逻辑涉及到了地图绘制,导致地图多次重绘.所以需要检查这部分的代码,保证地图只需要重绘一次即可.

【已解决】调试链接已关闭。原因websocket已断开 项目真机调试,打开webview调试,显示调试连接已关闭是什么回事?

WebView调试模式常见问题 WebView调试

【已经解决】如果你正在开发app应用,打开webview的时候提示websocket
我本地的是两个wifi,分别的是A和A_5G A_5G工作时候使用,A是2.4H的,给家用电器使用,有一次电脑抓包,不知道为啥,电脑和手机都切换成了A才能成功,出去回来后,手机自动连接的A_5G,电脑自动连接的A,导致不在一个wifi下面,所以不成功,把电脑的wifi设置成A_5G后问题迎刃而解
所以前面几天手机投屏不到电视,也是这个原因,有问题的就试试吧

继续阅读 »

【已经解决】如果你正在开发app应用,打开webview的时候提示websocket
我本地的是两个wifi,分别的是A和A_5G A_5G工作时候使用,A是2.4H的,给家用电器使用,有一次电脑抓包,不知道为啥,电脑和手机都切换成了A才能成功,出去回来后,手机自动连接的A_5G,电脑自动连接的A,导致不在一个wifi下面,所以不成功,把电脑的wifi设置成A_5G后问题迎刃而解
所以前面几天手机投屏不到电视,也是这个原因,有问题的就试试吧

收起阅读 »