android webview 中 js 模板引擎的使用
最近在项目中要求用 webview 展示几个界面, 而后台返回的不是 html 而是 json 数据。
起初用 StringBuilder 一个一个拼 html, 后来感觉太繁琐,拼一个还行,拼多了就无语了,为什么不用 js 模板引擎呢
先看一下效果,经测试速度还可以。
js 模板引擎有很多,像 jquery 创始人写的微型模板 artTemplate template BaiduTemplate juicer ......
有些依赖于 jqury node.js 等第三方库, 纯原生 js 的也很多。
js 模板引擎在浏览器中用的非常多, 在 server 端和 手机端用的相对少一些。
我用 artTemplate 做了个 demo
1 准备 html 模板,引入模板引擎,写好模板, 不知道 artTemplate 用法的可以先了解一下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="template.js"></script>
<style type="text/css">
body{
letter-spacing:1px;
//text-align:center;
}
.title{
color:#D55F52;
padding : 10px 0px 10px 0px;
}
.subtitle{
background-color:#FAFAFA;
padding:2px;
margin-top:5px;
}
.divtop{
background-color:#F0F0F0;
margin : 10px 0px 10px 0px;
}
.divimg{
margin : 10px 0px 10px 0px;
}
td.tdclass1{
background-color:#C54549;
text-align:center;
width:100px;
height : 22px;
color:#FFFFFF;
font-size : 12px;
}
table{
width : 100%;
}
td.tdclass2{
background-color:#FAFAFA;
text-align:center;
width:100px;
height : 50px;
color:#9B9B9B;
}
td .span1{
font-size : 12px;
color : #CB5D60;
}
</style> <script id="stocktpl" type="text/html">
<div class="title"><%=title%></div>
<div class="subtitle"><%=date%> 作者</div>
<div class="divtop">
<table>
<tr>
<td class="tdclass1">评级</td><td class="tdclass1">市值</td><td class="tdclass1">近三月涨幅</td>
</tr>
<tr>
<td class="tdclass2"><%=rating%></td><td class="tdclass2"><%=marketValue%>亿 <span class="span1">RMB</span></td><td class="tdclass2"><%=increase%>%</td>
</tr> <tr>
<td class="tdclass1">最新收盘价</td><td class="tdclass1">目标价</td><td class="tdclass1">预期收益率</td>
</tr>
<tr>
<td class="tdclass2"><%=closingPrice%> <sapn class="span1">RMB</span></td><td class="tdclass2"><%=targetPrice%> <span class="span1">RMB</span></td><td class="tdclass2"><%=expectedReturn%>%</td>
</tr>
</table>
</div> <div class="divimg">
<img src="http://s10.sinaimg.cn/mw690/001HvAkMgy6GWxCZdCp59&690" alt="" href="#">
</div> <div><%=content%></div>
</script>
</head> <body>
<div id="contentTop"></div>
<script>
/* var data = {
"id": 100001,
"date": "2014-01-20",
"ticker": "300037",
"title": "特斯拉的小伙伴,新能源的领头羊",
"abstract": "目前市场主题投资原因在于特斯拉",
"rating": "买入",
"increase": "15.54",
"content": "特斯拉汽车公司,一家生产和销售电动汽车以及零件的公司,只制造纯电动车,成立于2003年,总部设在了美国加州的硅谷地带[1]。其创始人马丁·艾伯哈德是硅谷工程师、资深车迷,而投资人是SpaceX,Paypal的创始人埃隆·马斯克。[2]\n特斯拉汽车公司是世界上第一个采用锂离子电池的电动车公司。其推出的首部电动车为Roadster[1]。\n特斯拉Tesla汽车集独特的造型、高效的加速、良好的操控性能与先进的技术为一身,从而使其成为公路上最快且最为节省燃料的车子。[3]特斯拉得名于美国物理学家以及电力工程师尼古拉-特斯拉的塞尔维亚姓。[4]",
"stockName": "新宙邦",
"stockImageUrl": "http://",
"marketValue": "322.0",
"closingPrice": "28.47",
"targetPrice": "35.6",
"expectedReturn": "25.04"
}; */ // parse the returned json string
var data = JSON.parse(window.java.getJson()); var html = template.render('stocktpl', data);
document.getElementById('contentTop').innerHTML = html;
</script>
</body>
</html>
2 java 中从后台取回 json 数据
webview.addJavascriptInterface(new Object() {
@JavascriptInterface
public String getJson() {
return json;
}
}, "java");
webview.loadUrl("file:///android_asset/stock.html");
3 js 中调 java 拿到数据 parse 成 json 对象, ok 剩下的就让模板引擎去做了
主要就是 java 和 js 的交互了
var data = JSON.parse(window.java.getJson());
其实和浏览器中使用是一样的。
还有一种思路就是 java 调用 js, java 拿到数据后调用 js 方法并传入数据, 然后模板引擎刷出界面。
但网上有人说 java 调 js 速度较慢, js 调 java 速度较快,到底哪个快没有测试过。
android webview 中 js 模板引擎的使用的更多相关文章
- android WebView中js的alert()失效
WebView的设置代码 wv = (WebView) findViewById(R.id.webView1); wv.getSettings().setJavaScriptEnabled(true) ...
- Xamarin Android Webview中JS调用App中的C#方法
参考链接:https://github.com/xamarin/recipes/tree/master/Recipes/android/controls/webview/call_csharp_fro ...
- WebView中JS调用Android Method 遇到的坑整理
WebView是android中常用的一个组件,其作用是展示网页,并让网页和android app进行一些业务逻辑上的交互. 其坑无数,相信用过的都知道,一个一个来解决吧. 1.怎么互调: <! ...
- doT js 模板引擎【初探】要优雅不要污
js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...
- 各种JS模板引擎对比数据(高性能JavaScript模板引擎)
最近做了JS模板引擎测试,拿各个JS模板引擎在不同浏览器上去运行同一程序,下面是模板引擎测试数据:通过测试artTemplate.juicer与doT引擎模板整体性能要有绝对优势: js模板引擎 Ja ...
- JS模板引擎 :ArtTemplate (2)
上一篇初略的介绍了一下javascript中的模板引擎,有兴趣的可以戳 这里 . 这一篇将带着大家一起做一个简易的模板引擎, 上一篇介绍到:模板引擎其实做的就是两件事. 根据一定的规则,解析我们所定义 ...
- js模板引擎介绍搜集
js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...
- Filter - Surge.js模板引擎过滤器
版权所有,转载请注明出处:http://guangboo.org/2014/01/05/filter-surgejs-template-engine 过滤器在surge.js模板引擎中多处用到,其类似 ...
- js模板引擎--artTemplate
js模板引擎--artTemplate 以前研究过一段时间的handlebars,但因为其渲染性能略逊于腾讯的artTemplate(在artTemplate的GitHub官网上有推荐的性能测试地址) ...
随机推荐
- APUE(3)---文件I/O (3)
十二.函数sync.fsync和fdatasync 延迟写:传统的Unix系统在内核中设有缓冲区或页高速缓冲,大多数磁盘I/O都通过缓冲区进行,当我们向文件写入数据时,内核通常先将数据复制到缓冲区,然 ...
- opencv——通过面积筛选最大轮廓,并求凸包矩形的长和宽
#include "stdafx.h" #include <iostream> #include<string> #include <stdio.h& ...
- Intel GPA果然是神器
又一次PERF暗黑三...只有GPA帮到了我. Intel GPA是一个用于测试产品性能和质量的工具.使用这个工具可以运行在游戏或3D应用程序中用来看看它们是如何工作的,其优势性的一点是,有了Auto ...
- C#设计模式--工厂模式之简单模式
简单工厂模式定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品 ...
- 使用扩展方法重写.NET底层架构
我们在开发B/S架构的项目时,用到的都是.NET底层各种命名空间提供的操作类,利用扩展类可以重新写出一套真正属于你自己的框架. PS:扫描下方二维码或点击链接,加入QQ群
- python之爬虫(二)爬虫的原理
在上文中我们说了:爬虫就是请求网站并提取数据的自动化程序.其中请求,提取,自动化是爬虫的关键!下面我们分析爬虫的基本流程 爬虫的基本流程 发起请求通过HTTP库向目标站点发起请求,也就是发送一个Req ...
- mysql实际碰到问题汇总
问题1:SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in G ...
- Elasticsearch学习(2) windows环境下Elasticsearch同步mysql数据库
在上一章中,我们已经能够通过spring boot来使用Elasticsearch,但是由于我们习惯性的将数据写入mysql,所以为了解决这个问题,Elasticsearch为我们提供了一个插件log ...
- [AIR] 与本地进程(应用程序)进行通讯
毫不夸张的说,此功能可以将Windows命令行程序(cmd.exe)通过AIR应用封装起来,并指挥它做任何你想做的事情 AIR2.0及以上与本地进程的交互主要体现在以下几方面: 启动进程并提供初始参数 ...
- Flask 发布 1.0 稳定版
简评:现在都开始版本大跃进了吗?对,别看别人,说的就是你 pipenv(名单太长,待补齐...) Flask 其实早就已经十分稳定了,而在第一个 commit 大概 8 年之后,版本号才最终反映出了这 ...