精华内容
下载资源
问答
  • HBuilder X怎么配置浏览器?HBuilder X是一款支持HTML5的Web开发工具,既可以将创建好的HTML文件运行在浏览器,还能够配置相关参数。下面小编就给大家带来HBuilder X浏览器运行配置方法,一起往下看看具体内容吧。1、...

    HBuilder X怎么配置浏览器?HBuilder X是一款支持HTML5的Web开发工具,既可以将创建好的HTML文件运行在浏览器,还能够配置相关参数。下面小编就给大家带来HBuilder X浏览器运行配置方法,一起往下看看具体内容吧。

    1、打开HBuilder中的菜单栏 --> 工具 -->选项

    2、点击选项选择常规,点击Web浏览器,会显示出我们以前使用的浏览器,但是版本已经很旧了,我们如果想要配置新的浏览器,要先删除它。

    3、直到删除的只剩下系统默认浏览器,然后点击确定。

    4、然后在菜单栏里点击任何一种浏览器,都会弹出未配置信息的提示。

    5、这时候我们配置相关信息,输入名称、位置、参数等信息即可。

    6、创建web运行文件和环境,点击页面右上角的【预览】按钮,在屏幕的右侧就会弹出相应的预览效果。

    7、点击菜单栏的【运行】->【浏览器】,弹出的菜单中选择自己安装的浏览器即可。

    8、然后在您选择的浏览器中就会出现运行的结果,还能够更改相关主题哦,点击【工具】-【主题】就能选择自己喜欢的主题,例如小编就相对偏爱酷黑主题。

    展开全文
  • HBuilder X是一款支持HTML5的Web开发工具,既可以将创建好的HTML文件运行在浏览器,还能够配置相关参数,下面就跟小编一起来了解下具体步骤吧。类别:编程工具 大小:17.21M 语言:简体中文评分:6配置浏览器:1、...

    HBuilder X是一款支持HTML5的Web开发工具,既可以将创建好的HTML文件运行在浏览器,还能够配置相关参数,下面就跟小编一起来了解下具体步骤吧。

    类别:编程工具   大小:17.21M    语言:简体中文

    评分:6

    配置浏览器:

    1、打开HBuilder中的菜单栏 --> 工具 -->选项

    2、点击选项选择常规,点击Web浏览器,会显示出我们以前使用的浏览器,但是版本已经很旧了,我们如果想要配置新的浏览器,要先删除它。

    3、直到删除的只剩下系统默认浏览器,然后点击确定。

    4、然后在菜单栏里点击任何一种浏览器,都会弹出未配置信息的提示。

    5、这时候我们配置相关信息,输入名称、位置、参数等信息即可。

    6、创建web运行文件和环境,点击页面右上角的【预览】按钮,在屏幕的右侧就会弹出相应的预览效果。

    7、点击菜单栏的【运行】->【浏览器】,弹出的菜单中选择自己安装的浏览器即可。

    8、然后在您选择的浏览器中就会出现运行的结果,还能够更改相关主题哦,点击【工具】-【主题】就能选择自己喜欢的主题,例如小编就相对偏爱酷黑主题。

    以上就是小编为你带来的HBuilder X运行配置方法,有兴趣的小伙伴快去试试吧。

    展开全文
  • 需求说明:使用MUI+Vue等技术并且通过HBuilderX打包开发移动app,在有版本更新时需要自动提示用户有新版本,并且可以点击下载自动安装。思路说明:应用打开时(使用Vue的生命周期mounted),获取自己的版本信息appinfo...

    需求说明:使用MUI+Vue等技术并且通过HBuilderX打包开发移动app,在有版本更新时需要自动提示用户有新版本,并且可以点击下载自动安装。

    思路说明:

    应用打开时(使用Vue的生命周期mounted),获取自己的版本信息appinfo;

    (本身app的信息一般存放在mainfest.json中,直接获取即可)

    mui.plusReady(function(){

    mui.getJSON("manifest.json", null, function(manifest){

    var version = data.version

    var vercode_local = version.code;

    var vername_local = version.name;

    console.log("版本名称:"+vername_local+",版本code:"+vercode_local);

    });

    });

    获取remote服务器上移动应用最新的版本信息(一般是存放一个json的数据信息)

    mui.getJSON(【服务器的url + appInfo.version_json】, null, function(data) {

    var verCode = data.verCode;

    var verName = data.verName;

    //服务器版本

    //console.log("服务器版本名称:"+verName +",服务器版本code:"+verCode);

    });

    判断两个版本号是否相等,不相等则需要更新

    if(vercode_local == verCode) {

    mui.toast("当前已经是最新版本!");

    } else {

    var btnArray = ['是', '否'];

    mui.confirm('当前版本是:' + vername_local + ', 最新版本是:' + verName + ', 是否立即更新?', '发现最新版本', btnArray, function(z) {

    if(z.index == 0) {

    console.log('确定');

    installApk(BASEINFO.maxsvc + appInfo.version_apk);

    } else {

    console.log('不确定');

    return;

    }

    });

    }

    1.在vue的mounted生命周期进行更新校验

    mounted() {

    mui.plusReady(function() {

    //console.log("检查更新!!!!");

    mui.init({statusBarBackground: '#EEEEEE'});

    plus.screen.lockOrientation("landscape-primary");

    if(mui.os.android) {

    mui.getJSON("../../manifest.json", null, function(data) {

    var version = data.version

    var vercode_local = version.code;

    var vername_local = version.name;

    //当前版本

    //console.log("版本名称:"+vername_local+",版本code:"+vercode_local);

    mui.getJSON(BASEINFO.maxsvc + appInfo.version_json, null, function(data) {

    var verCode = data.verCode;

    //服务器版本

    //console.log("服务器版本code:"+verCode);

    var verName = data.verName;

    if(vercode_local == verCode) {

    mui.toast("当前已经是最新版本!");

    } else {

    var btnArray = ['是', '否'];

    mui.confirm('当前版本是:' + vername_local + ', 最新版本是:' + verName + ', 是否立即更新?', '发现最新版本', btnArray, function(z) {

    if(z.index == 0) {

    console.log('确定');

    installApk(BASEINFO.maxsvc + appInfo.version_apk);

    } else {

    console.log('不确定');

    return;

    }

    });

    }

    });

    });

    }

    });

    }

    2.其中需要用到application.js中声明的函数

    3.application.js中的函数

    var BASEINFO={

    //接口url

    maxsvc:"http://*.*.*.*:port/appUpdate",

    maxbiz:"http://*.*.*.*:port/maxbiz",

    download:"http://*.*.*.*:port/whatsup/releaseapk.jsp"

    }

    function getWinWH() {

    var temp = {};

    var winWidth = "0";

    var winHeight = "0";

    if(window.innerWidth) {

    winWidth = window.innerWidth;

    } else if((document.body) && (document.body.clientWidth)) {

    winWidth = document.body.clientWidth;

    }

    if(window.innerHeight) {

    winHeight = window.innerHeight;

    } else if((document.body) && (document.body.clientHeight)) {

    winHeight = document.body.clientHeight;

    }

    if(document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth) {

    winHeight = document.documentElement.clientHeight;

    winWidth = document.documentElement.clientWidth;

    }

    temp.winWidth = winWidth;

    temp.winHeight = winHeight;

    return temp;

    }

    function getAppInfo(appname) {

    var prefix = "";

    var path = "";

    var name = "";

    //MaxUA

    if(appname == "mua") {

    path = "com.maxnerva.maxua";

    prefix = "";

    name = path;

    }

    //异常停线通知(L5)

    if(appname == "men") {

    path = "com.newpc.b2b.";

    prefix = "asm_";

    name = path + prefix + appname;

    }

    //E点名(L5)

    if(appname == "mrc") {

    path = "com.newpc.b2b.";

    prefix = "asm_";

    name = path + prefix + appname;

    }

    //组装生产日报表(L5)

    if(appname == "pdr") {

    path = "com.newpc.b2b.";

    prefix = "asm_";

    name = path + prefix + appname;

    }

    //仓库进料转仓(L6)

    if(appname == "mgr") {

    path = "com.foxconn.";

    prefix = "";

    name = path + prefix + appname;

    }

    //发料单查询(L6)

    if(appname == "mgi") {

    path = "com.foxconn.max.activity";

    prefix = "";

    name = path;

    }

    //仓库分批发料(L5)

    if(appname == "mso") {

    path = "com.newpc.b2b.";

    prefix = "asm_";

    name = path + prefix + appname;

    }

    //上料表查询(L6)

    if(appname == "mgf") {

    path = "com.newpc.b2b.";

    prefix = "asm_";

    name = path + prefix + appname;

    }

    //IQC进料检验(L6)

    if(appname == "mqi") {

    path = "com.foxconn.iqc";

    prefix = "";

    name = path;

    }

    //流程卡(L5)

    if(appname == "wfc") {

    path = "com.mts.";

    prefix = "";

    name = path + prefix + appname;

    }

    //mqi_v

    if(appname == "mqi_v") {

    path = "com.foxconn.";

    prefix = "";

    name = path + prefix + appname;

    }

    var appInfo = {};

    appInfo.scheme = "open";

    appInfo.host = name;

    appInfo.package = name;

    appInfo.version_json = "/resource/download/" + appname + ".json";

    appInfo.version_apk = "/resource/download/" + appname + ".apk";

    appInfo.version_desc = "/resource/download/" + appname + ".desc";

    return appInfo;

    }

    function installApk(url) {

    var dtask = plus.downloader.createDownload(url, {}, function(d, status) {

    if(status == 200) {

    plus.nativeUI.toast("正在准备环境,请稍后!");

    sleep(1000);

    var path = d.filename;

    console.log(d.filename);

    plus.runtime.install(path);

    } else {

    alert('Download failed:' + status);

    }

    });

    dtask.start();

    }

    function sleep(numberMillis) {

    var now = new Date();

    var exitTime = now.getTime() + numberMillis;

    while(true) {

    now = new Date();

    if(now.getTime() > exitTime)

    return;

    }

    }

    function getAppVersion(packagename) {

    var versionJson = {};

    var main = plus.android.runtimeMainActivity();

    var pm = main.getPackageManager();

    var PackageManager = plus.android.importClass(pm);

    var pi = pm.getPackageInfo(packagename, 0);

    var PackageInfo = plus.android.importClass(pi);

    var vercode_local = plus.android.getAttribute(pi, "versionCode");

    var vername_local = plus.android.getAttribute(pi, "versionName");

    versionJson.vercode_local = vercode_local;

    versionJson.vername_local = vername_local;

    return versionJson;

    }

    function jumpAndroid(appname) {

    var appInfo = getAppInfo(appname);

    //

    console.log("appInfo "+appInfo);

    var url = appInfo.scheme + "://" + appInfo.host +

    "?BUNDLE_CAMP=" + localStorage.getItem("musercamp") +

    "&BUNDLE_USERNAME=" + localStorage.getItem("musername") +

    "&BUNDLE_USERPASSWRD=" + localStorage.getItem("mpassword");

    //

    console.log("appInfo "+appInfo);

    try {

    if(plus.os.name == "Android") {

    if(plus.runtime.isApplicationExist({

    pname: appInfo.host,

    action: appInfo.scheme + '://'

    })) {

    var versionJosn = getAppVersion(appInfo.package);

    var vercode_local = versionJosn.vercode_local;

    var vername_local = versionJosn.vername_local;

    mui.getJSON(BASEINFO.maxsvc + appInfo.version_json, null, function(data) {

    var verCode = data.verCode;

    var verName = data.verName;

    if(vercode_local == verCode) {

    location.href = url;

    } else {

    var btnArray = ['是', '否'];

    mui.confirm('当前版本是:' + vername_local + ', 最新版本是:' + verName + ', 是否立即更新?', '发现最新版本', btnArray, function(z) {

    if(z.index == 0) {

    installApk(BASEINFO.maxsvc + appInfo.version_apk);

    } else {

    location.href = url;

    }

    });

    }

    });

    } else {

    var btnArray = ['是', '否'];

    mui.confirm('应用程式未安装, 是否立即安装?', '应用程式安装确认', btnArray, function(z) {

    if(z.index == 0) {

    installApk(BASEINFO.maxsvc + appInfo.version_apk);

    } else {

    return;

    }

    });

    }

    }

    } catch(e) {

    mui.toast("更新失败 "+e.toString());

    }

    }

    function myAjax(url, type, input, timeout, success, error) {

    var xhr = new plus.net.XMLHttpRequest();

    if(timeout && timeout > 0) xhr.timeout = timeout;

    xhr.onreadystatechange = function() {

    switch(xhr.readyState) {

    case 0:

    console.log("xhr请求已初始化");

    break;

    case 1:

    console.log("xhr请求已打开");

    break;

    case 2:

    console.log("xhr请求已发送");

    break;

    case 3:

    console.log("xhr请求已响应");

    break;

    case 4:

    if(xhr.status == 200) {

    success(eval('('+xhr.responseText + ')'));

    } else {

    error(xhr.readyState, xhr);

    }

    break;

    default:

    break;

    }

    }

    if(input) {

    if(type == 'post' || type == 'get') {

    xhr.open(type || "GET", url);

    xhr.send(JSON.stringify(input));

    } else {

    throw new Error("type is undefined !")

    }

    } else {

    if(type != 'post' && type != 'get') {

    throw new Error("type is undefined !")

    }

    xhr.open(type || "GET", url);

    xhr.send();

    }

    }

    function isSysAdmin(groups) {

    var result = false;

    for(var i = 0; i < groups.length; i++) {

    var group = groups[i];

    if(group.groupcode.toUpperCase() == "SYSADMIN") {

    result = true;

    break;

    }

    }

    return result;

    }

    function isReadonly() {

    var result = false;

    var muserStr=localStorage.getItem("muser");

    var muserObj=eval('(' + muserStr + ')');

    var groups=muserObj.group;

    if(groups && groups.length>0 && groups[0].groupcode.toUpperCase().indexOf("_READ")>0) result = true;

    return result;

    }

    function getLongUsername(){

    var muserStr=localStorage.getItem("muser");

    var muserObj=eval('(' + muserStr + ')');

    var muser=muserObj.user;

    return muser.username+"("+muser.lastname+")";

    }

    //其他方法检查版本

    function svn(t) {

    var xhr_svn = new plus.net.XMLHttpRequest();

    xhr_svn.onreadystatechange = function() {

    if (xhr_svn.readyState == 4) {

    if (xhr_svn.status == 200) {

    var res = JSON.parse(xhr_svn.responseText);

    if (res.state == 'yes') {

    if (res.mark != t) {

    var upr;

    plus.nativeUI.confirm( "有新版本发布了,是否件更新?", function(e){

    upr=(e.index==0)?"Y":"N";

    console.log(upr);

    if(upr=="Y"){

    var wt = plus.nativeUI.showWaiting('下载更新中,请勿关闭');

    var url = res.url; // 下载文件地址

    var dtask = plus.downloader.createDownload(url, {}, function(d, status) {

    if (status == 200) { // 下载成功

    var path = d.filename;

    console.log(d.filename);

    plus.runtime.install(path);

    } else { //下载失败

    alert("Download failed: " + status);

    }

    });

    dtask.start();

    }else{

    }

    }, "XXX系统", ["确认","取消"] );

    } else {

    console.log('最新');

    }

    }

    } else {

    plus.nativeUI.toast( "网络连接错误!");

    }

    }

    }

    xhr_svn.open("GET", "http:/XXX/APPobject/imes/update.json");//这里的地址是上面json文件的地址

    xhr_svn.send();

    }

    4.服务器端添加配置信息

    1.主要添加json(新版本信息),apk(新版本安装包),desc(描述文件)

    展开全文
  • 正式版和 Alpha 版的区别Alpha 版比正式版更新频率更高,新功能会优先在 alpha 版上发布。Alpha 独立于正式版,建议电脑上保持正式版...但插件需要各自安装。我们推荐 uni-app 的开发者,同时安装2个版本。经常向我...

    正式版和 Alpha 版的区别

    Alpha 版比正式版更新频率更高,新功能会优先在 alpha 版上发布。

    Alpha 独立于正式版,建议电脑上保持正式版和 alpha 2个版本,不要互相覆盖。

    Alpha 和正式版各自有独立的升级机制,不会互相影响。

    Alpha 和正式版共用相同的用户配置,如主题、快捷键设置、代码块设置。但插件需要各自安装。

    我们推荐 uni-app 的开发者,同时安装2个版本。经常向我们反馈 alpha 版问题。开发工具的测试很复杂,不是我们内部测试好就肯定没问题,需要在各种各样的代码的写法下测试。如果大家总抱着等别人去体验 alpha,稳定后你再升级正式版的心态话,那正式版也不可能真的稳定。每次升级正式版抱怨怎么新版问题这么多的开发者,请下次记得提前安装好 alpha 版,有问题立即反馈,我们会解决掉大家反馈的 alpha 的问题再更新正式版。

    Alpha版下载地址

    标准版和App开发版的区别说明

    用哪个都行。HBuilderX 标准版可直接用于 web 开发、markdown、字处理场景。做 App 仍需要安装插件。App 开发版预置了 App/uni-app 开发所需的插件,开箱即用。标准版也可以在插件安装界面安装 App 开发所需插件,App 开发版只是一个预集成作用。App 开发插件体积大的原因主要有2方面:

    真机运行基座,Android 版、iOS 版、iOS 模拟器版,加起来体积就1百多M。真机运行基座需要把所有模块都内置进去,方便大家开发调试。开发者自己做 app 打包是不会这么大的,因为可以在 manifest 里选模块来控制体积。

    uni-app 的编译器,依赖 webpack 和各种 node 模块,node_modules 就是这么一个生态现状,文件超级多,几万个文件,解压起来很慢。

    如果你使用 uni-app cli 方式创建项目,编译器会在项目下,且你不开发 App,只用 uni-app 做小程序和 H5,那使用标准版就可以。

    其他

    Alpha 版无法及时提交360审核,可能会被误报安全问题,忽略即可。

    展开全文
  • 关于hbuilder X怎么快速创建uni-app

    千次阅读 2019-11-22 11:00:16
    下载HBuilderX地址 下载地址: https://www.dcloud.io/hbuilderx.html 点击下载 安装完毕。 打开HbuilderX 点击右上角文件-----新建-------项目 选择uni-app 输入项目名称 简单的uni-app就创建成功啦~ ...
  • HBuilderX怎么配置使用 Git?

    千次阅读 2019-05-30 17:31:59
    HBuilderX怎么配置使用 Git? (1)安装终端; 工具——插件安装——内置终端、git (2)下载安装 Git; (3)配置 Git,即配置环境变量 安装完Git后,首先右单击弹出快捷菜单——属性; 打开计算机系统...
  • 1、uni-app uView UI框架安装方式; (1)下载安装; (2)npm安装; 2、我用的是npm安装方式。 我使用HBX创建的uniapp,具体npm安装uView UI框架,流程如下: 如果您的项目根目录没有package.json文件的话,请先...
  • 则下载完成后,不会启动安装过程。而在更新之前编译后的版本是可以启动安装过程的。 这个下载完成之后,是重新启动APP!!! 是自己重新启动APP!!!是自己重新启动APP!!![步骤]任意一个APP,编写自动更新,下载,下载...
  • 外部命令可以让您在HBuilderX中通过菜单、快捷键等方式调用外部程序或命令行使用场景压缩文件与解压压缩图片文档转换(比如markdown转pdf)调用python、shell脚本打开本地的某个程序传输文件到服务器操作服务器的某些...
  • 一、首先当然是要开启环境了,首先找到安装XAMPP的文件夹,点击打开“xampp-control” 文件,点击start...选择“文件”–“打开目录”选择刚刚创建的phpinfo文件四、在HBuilder安装支持PHP的插件,点击“工具”–...
  • 下载:HBuilderX编程工具 官方下载,建议下载12版比较稳定. 好了之后,去下一个node.js. 安装步骤,一直点下一步就行了,然后在cmd以管理员身份运行,输入node -V 有版本号就是正常安装. 安装好了. 回到正题 使用...
  • 首先在HbuilderX里面的工具-插件安装-安装新插件Git插件 然后下载TortoiseGit 然后在桌面右键选择TortoiseGit-设置-网络。把原来的TortoiseGit的ssh的路径改成git的路径。 (我这里下载了个TortoiseGit中文语言包...
  • XRY新版本更新:1增加了对锁定三星S9、S9+、Note9和S10设备的支持。2增加了对700多个新应用程序和设备的支持。...在使用App降级时为应用程序添加版本号和安装、最后更新时间戳。2Photon:恢复支持P2P聊天和...
  • 过程:使用Mac电脑,当天下午,在关闭HBuilderX的时候,就再也打不开,怎么打开怎么闪退,开始以为是缓存问题,先重启了电脑,并不好使。再想可能是安装包的版本问题,于是又删除HBuilderX,从官网又下载安装包,...
  • 1、我使用了hbuilderx新建了一个普通项目,选择了elemet-starter2、我在项目下面安装了vue-router3、我再src创建了router文件夹,下面放了index.js,代码为import App from '../APP'import radio from '../page/...
  • 第三步 下载一个hbuilderx并选app-ui创建小程序 下载hbuilderX 下载下来之后 然后要下载插件 唔注意首先我们的电脑里已经有node.js了(因为我比较菜,写细一点希望你们能看懂) 他的底层框架是vue进去之后可以看的...
  • 最近的任务是做一个混合的app,刚好我想玩...www.dcloud.io/hbuilderx.h…然后需要安装微信开发者工具 最好用最新的如果直接写app的话 可以安装模拟器 我自己安装的是Android Studio 如果是mac 再安装Xcode 就可以双
  • 最近的任务是做一个混合的app,刚好我想玩一下uni-app怎么样,在考虑用哪个技术的时候,考虑了RN,Taro,uni-app,RN没有踩过坑怕hold不住,Taro...:https://www.dcloud.io/hbuilderx.html然后需要安装微信开发者工...
  • 最近的任务是做一个混合的app,刚好我想玩一下uni-app怎么样,在考虑用哪个技术的时候,考虑了RN,Taro,uni-app,RN没有踩过坑怕hold不住,Taro...:https://www.dcloud.io/hbuilderx.html然后需要安装微信开发者工...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

怎么安装hbuilderx