wex5 python怎么结合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wex5 python怎么结合相关的知识,希望对你有一定的参考价值。
参考技术A WeX5的JS是基于AMD规范, 通过requirejs技术实现AMD规范。本文章主要介绍在WeX5中,如何引用JS,具体分为:如何引用符合AMD规范的JS?
如何引用不符合AMD规范的JS?
如何引用外部的JS?
针对JS引用,平台自带了一个专门的演示案例importJs,目录结构如下:
引用JS
如何引用符合AMD规范的JS文件?
方式一:通过require(‘xx’)引用12
AMD1.js是UI2下符合AMD规范的一个文件,代码如下:
AMD1.js文件内容:
1
2
3
4
5
6
7
define(function(require)
return
fnOfAMD1: function()
alert(“hello AMD1”);
;
);
importJs.js中引用AMD1.js的代码如下:
1
2
3
4
5
6
7
8
define(function(require)
var =require(“jquery”);varjustep=require(“UI/system/lib/justep”);
//加载UI2下, 符合AMD规范的文件
var amd1 = require("./AMD1");
...1234
);
说明:在importJs中,通过var amd1 = require(“./AMD1”)引用了当前目录下的AMD1.js文件,之后,可以通过amd1调用AMD1.js文件返回的方法或变量,例如:amd1.fnOfAMD1() //调用AMD1.js定义的方法;
方式二:通过require([‘x1’, ‘x2’], function(p1, p2))引用12
AMD2.js是UI2下一个符合AMD规范的js文件,内容如下:
1
2
3
4
5
6
7
define(function(require)
return
fnOfAMD2: function()
alert(“hello AMD2”);
;
);
importJs.js中引用AMD2.js的代码如下:
1
2
3
4
5
6
7
Model.prototype.importInnerBtnClick = function(event)
//加载UI2下, 符合AMD规范的文件
var path = “./AMD2”;
require([path], function(m)
m.fnOfAMD2();
);
;
说明:在importJS.js中,通过require([xxx], function(x))方式,引用了AMD2.js文件,在回调函数中,参数m是AMD2.js文件返回的对象,在回调函数中,可以通过m调用AMD2.js中返回的对象上的方法和变量,例如:m.fnOfAMD2();
如何引用不符合AMD规范的JS文件?
对于不符合AMD规范的JS文件,引用方式与符合AMD规范的JS文件类似,唯一的区别是不符合模块化的JS没有返回值,具体引用方式如下:
方式一:通过require(‘xx’)引用12
noneAMD1.js是UI2下一个不符合AMD规范的JS文件,内容如下:
1
2
3
function fnOfNoneAMD1()
alert(“hello noneAMD1”);
importJs.js中引用noneAMD1.js的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
define(function(require)
var =require(“jquery”);varjustep=require(“UI/system/lib/justep”);
//加载UI2下, 符合AMD规范的文件
var amd1 = require("./AMD1");
//加载外网, 符合AMD规范的文件
var outterAMD1 = require("080/x5/UI2/demo/misc/importJs/outterAMD1.js");
//加载UI2下, 不符合AMD规范的文件
require("./noneAMD1");
...12345678910
);
说明:如上12行代码所示,通过require(“./noneAMD1”)引用了不符合AMD规范的noneAMD1.js文件,在importJs.js的后续代码中,可以直接访问noneAMD1.js中定义的全局函数或变量,例如:fnOfNoneAMD1();
方式二:通过require([‘x1’, ‘x2’], function())引用12
noneAMD2.js是UI2下一个不符合AMD规范的JS文件,内容如下:
1
2
3
function fnOfNoneAMD2()
alert(“hello noneAMD2”);
importJs.js中引用noneAMD2.js的代码如下:
1
2
3
4
5
6
7
Model.prototype.importInnerNoneAMDBtnClick = function(event)
//加载UI2下, 不符合AMD规范的文件
var path = “./noneAMD2”;
require([path], function()
fnOfNoneAMD2();
);
;
说明:在require([xx], function())的回调函数中,可以直接使用被引用的noneAMD2.js中定义的全局函数和变量,例如:fnOfNoneAMD2();
如何引用外部的JS文件?
对于外部的JS文件,引用方式和UI2下的JS文件类似(无论是符合AMD规范还是不符合AMD规范),唯一的区别是给定的JS文件路径必须是”http://”开头的绝对路径,且必须是完整的路径(如果有扩展名,必须带扩展名,如”.js”)。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
define(function(require)
…
//加载外网, 符合AMD规范的文件
var outterAMD1 = require(“h04/outterAMD1.js“);
…
//加载外网, 不符合AMD规范的文件
require(“h/wp-content/uploads/2015/04/outterNoneAMD1.js“);
…
Model.prototype.importOutterBtnClick = function(event)
//加载外网, 符合AMD规范的文件
var path = “wex5.com/wp-content/uploads/2015/04/outterAMD2.js“;
require([path], function(m)
m.fnOfOutterAMD2();
)
;
…
Model.prototype.importOutterNoneAMDBtnClick = function(event)
//加载外网, 不符合AMD规范的文件
var path = “om/wp-content/uploads/2015/04/outterNoneAMD2.js“;
require([path], function()
fnOfOutterNoneAMD2();
)
;
…
);
总结
在WeX5中,引用JS(无论是符合AMD规范,还是不符合AMD规范)主要有两种方式:require(‘path’)和require([xx, xx], function(p1,p2)),这两种方式对比如下:
引用JS方式 被引用JS的加载顺序 限制
require(‘xx’) 预先加载被引用的JS,再加载当前JS; require参数必须是字符串常量;
require([xx, xx],function(p1,p2)) 先加载当前JS,执行到require语句时,才加载被引用的JS; require参数支持变量或表达式;
对于这两种require方式,path必须符合以下规则:
如果引用UI2下的文件,支持两种路径:以”./”或”../”开头的相对路径(相对于当前js所在的文件);以”UI/”开头的路径(UI表示UI2);路径不需要带文件扩展名”.js”;
如果引用外部文件,路径必须是以”http://”开头的完整路径(如果有扩展名”.js”,必须带上扩展名);
WeX5是单页模式,通过require引用的JS文件,每个不同的JS文件只加载一次,如果使用不符合AMD规范的JS文件,需要注意全局JS变量只有一份(多个页共享相同的全局变量)。
注意事项
通过require加载js文件时,如果被加载的js文件中有document.write时,会报错,例如,执行以下代码时:
1
require([“haidu.com/api?type=quick&ak=您的密钥&v=1.4”],function());
会出现以下错误:
Failed to execute ‘write’ on ‘Document’: xxx It isn’t possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.
原因是”aidu.com/api?type=quick&ak=您的密钥&v=1.4″返回的代码类似:
1
2
3
4
5
(function()
window.BMap_loadScriptTime = (new Date).getTime();
document.write(‘');
‘);
)();
解决方法可参考异步加载百度地图,例如:
1
2
3
4
5
6
7
8
9
10
11
Model.prototype.baiduBtnClick = function(event)
if (!window._baiduInitialize)
window._baiduInitialize = function()
var mp = new BMap.Map(“map”);
mp.centerAndZoom(new BMap.Point(121.491, 31.233), 11);
;
require(["hi.map.baidu.com/api?v=1.4&ak=您的密钥&callback=_baiduInitialize"], function());
123
;
wex5 初级项目实战入门 01 框架与思路
一.前言
使用wex5一段时间了,感觉wex5自带的baas后端不伦不类,本身用前端的思想去处理后端的技术问题,本身就是不切合实际的一种想法。能不能结合其它后端来提升wex5的整体开发水平和速度呢?
经过对比,选择了thinkphp5+layui2.0+vue.js+wex5的解决方案。
本人是初级学习者,将学习和练习过程记录,希望加深理解,并帮助更多有理想的人,答疑解惑。随后基于四大框架来制作学习视频网站,博客图文跟进介绍,便于同步学习。
先看一下管理后台基本效果。
1.加入动态星星背景的登陆页
2 深黑色的管理后台
3 数据增删改查
今天开篇不说技术节点,重点从项目设计和开发角度,重点说开发总体思路。
二 部署
对于初学者而言,项目部署个人推荐宝塔面板.linux 和window版本都有。无论是本机调试,还是服务器部署,简单,自带了环境搭建,一键建站等众多工具。具体使用可参见官网或者我的博客。
注意:1. 一键部署thinkphp5框架时,linux版自带伪静态,window 版没有,需要手动添加伪静态.
2 .管理后台和前端,后端,其实是三个应用,需要三个项目。本机测试和远程部署,后端路径可能会在页面中反复使用。一量更改,需要大量修改。可以写一个js来统一调用。
这样在页面中只要引入这段js,baseUrl就得到后端域名。
3 . window本机调试域名设置:
C:\\Windows\\System32\\drivers\\etc\\hosts 文件添加本机域名
顺便说一下,一些广告也可以在这里干掉
三 框架选择与对比
一口气学4个框架,听起来吓人,其实简单。从基础流程和逻辑作起,跑通了,其它就是复制和粘贴了。特别是模块化设计思想成熟以后,代码和页面复用性提高。框架的作用就是为了高效。
1. thinkphp5.0
国产的好东西,不多说了,学习成本低,响应快,代码好看,配置简单,基于mvc模型操作,不能再简单了。关键是报错给的精确到标点。之前用baas的现在要出坑。java的一堆神报错,本人难于接受。
来几张图看看:
数据库配置,填完基本参数,就能拿到数据,不用考虑并发,连接池什么的。
在控制器里写了几行代码,根据id取出用户模型数据,转换成json返回。够简单吧。
调用淘宝接口,根据访问ip得到访问者的地理信息,查询到城市,很多人想做这件事,简单位。
2 . layui
后台管理界面用layui,无论是效率还是美观,值得使用。
关键是文档写的太好。你要什么,直接从官网托下来就能用。改的地方也给你写好了例子。无语的api.
layui重点维护表格组件table和弹层组件layer,实在是有先见之明。
table的使用,从官网拷下来,改改字段就能用。
layer功能太强大,弹信息,弹页面都可以。关键是快。
3 .vue.js
一说vue.js,大家都怕了。我也怕。但是我看看了文档几行。不用不行。
比如下面这个页面:
信息查询页面,用过wex5自然想到绑定,多简单。那要是没有绑定呢??
老老实实一个一个取出元素赋值!!!!!
用了vue.js以后,创建一个vue实例,绑到外层div上,内层元素就可以直接绑定显示了。
数据变了,内容就响应的变。
vue我只用到了v-model.已经可以用了。其它可以用到了再学。
layui和vue在一些地方会有冲突:
1。layui 的layui-admin样式内的元素不能绑定vue实例
2. layui 的form表单中,radio,checkbox 等样式不能正确绑定vue实例,可使用原生form组件
3. div嵌套中绑定会出现数据冲突。只能单一层级绑定。
4 wex5 3.6
掉进很多次wex5的坑,没有一种框架是完美的。虽然响应不是很快,那要是拋弃了baas呢???
看来wex5还是一个不错的快速开发前端框架。至于大家吐槽的app问题,不行就整原生吧---如果你有能力的话。
目前稳定版本是3.6.不知官方是否还在重点维护。
四 总结
1 4个框架,配合使用。
2 配套教学视频同步制作,欢迎指出,批评。本人小白,言多勿怪。
以上是关于wex5 python怎么结合的主要内容,如果未能解决你的问题,请参考以下文章