Skip to content

Commit

Permalink
基于虚拟DOM的avalon
Browse files Browse the repository at this point in the history
  • Loading branch information
RubyLouvre committed Feb 3, 2016
1 parent 2ee5276 commit 20a467b
Show file tree
Hide file tree
Showing 153 changed files with 25,451 additions and 32,142 deletions.
33 changes: 33 additions & 0 deletions B.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html>

<head>
<title>first example</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="avalon.js"></script>
<script>
var vm = avalon.define({
$id: "test",
name: "司徒正美",
"aaa-bbb-ccc": 111
})
window.onload = function () {
var el = document.getElementById("aaa")
el.onclick = function (e) {
console.log(e)
e.preventDefault()
}

el.click()
}

</script>
</head>

<body ms-controller="test">

<p><a href="http://www.baidu.com" id="aaa">aaa</a></p>
</body>

</html>
19 changes: 16 additions & 3 deletions avalon.js
Original file line number Diff line number Diff line change
Expand Up @@ -3107,7 +3107,7 @@ var keywords = [
"throws,transient,volatile", /*保留字*/
"arguments,let,yield,undefined" /* ECMA 5 - use strict*/].join(",")
var rkeywords = new RegExp(["\\b" + keywords.replace(/,/g, '\\b|\\b') + "\\b"].join('|'), 'g')
var rpaths = /[$_a-z]\w*(\.[$_a-z]\w*)*/g
var rpaths = /[$_a-z][-\w]*(\.[$_a-z][-\w]*)*/g
var rfilter = /^[$_a-z]\w*/
//当属性发生变化时, 执行update
var rfill = /\?\?\d+/g
Expand Down Expand Up @@ -3178,7 +3178,6 @@ function parseExpr(expr, vmodel, binding) {
function fill(a) {
return maps[a]
}

input = input.replace(rregexp, dig).//移除所有正则
replace(rstring, dig).//移除所有字符串
replace(rmethod, dig2).//移除所有正则或字符串方法
Expand Down Expand Up @@ -3231,17 +3230,30 @@ function parseExpr(expr, vmodel, binding) {
var headers = []
var unique = {}
var pathArray = []
var replaceBody = {}
for (var i in paths) {
pathArray.push(i)
if (!unique[i]) {
var key = i.split(".").shift()
unique[key] = true
headers.push("var " + key + " = __vm__." + key + ";\n")
if(key.indexOf("-")>0){
var $key = key.replace(/-/g,"$")
replaceBody[key] = $key
headers.push("var " + $key + " = __vm__[" + quote(key) + "];\n")
}else{
headers.push("var " + key + " = __vm__." + key + ";\n")
}


}
}
binding.paths = pathPool.put(category + ":" + input,
pathArray.join("★"))
for(var i in replaceBody){
body = body.replace(new RegExp(escapeRegExp(key),"g"), replaceBody[i])
}
body = body.replace(rfill, fill).trim()

var args = ["__vm__"]
if (category === "on") {
args = ["$event", "__vm__"]
Expand Down Expand Up @@ -3284,6 +3296,7 @@ function parseExpr(expr, vmodel, binding) {

try {
fn = new Function(args.join(","), headers.join(""))
console.log(fn+"")
} catch (e) {
avalon.log(expr + " convert to\n function( " + args + "){\n" +
headers.join("") + "}\n fail")
Expand Down
Loading

0 comments on commit 20a467b

Please sign in to comment.