????Templater ?????е????????? supplant??????????????????????????????????????????????? QUnit ???????????????????????????????????????????????????????? .render() ??????????????????壬?????????????????????? defineTemplate ??????Ч??????????????????????? getTemplate() ???????????????????????????н?????????????????????????????????????????????????????????????????????????????????????з??????????????????????????????????????????????汾??
????JavaScript
????function Templater() {
????this._templates = {};
????}
????Templater.prototype = {
????_supplant: function(str?? params) {
????for (var prop in params) {
????str.split("{" + prop +"}").join(params[prop]);
????}
????return str;
????}??
????render: function(name?? params) {
????if (typeof this._templates[name] !== "string") {
????throw "Template " + name + " not found!";
????}
????return this._supplant(this._templates[name]?? params);
????}??
????defineTemplate: function(name?? template) {
????this._templates[name] = template;
????}
????};
????function Templater() {
????this._templates = {};
????}
????Templater.prototype = {
????_supplant: function(str?? params) {
????for (var prop in params) {
????str.split("{" + prop +"}").join(params[prop]);
????}
????return str;
????}??
????render: function(name?? params) {
????if (typeof this._templates[name] !== "string") {
????throw "Template " + name + " not found!";
????}
????return this._supplant(this._templates[name]?? params);
????}??
????defineTemplate: function(name?? template) {
????this._templates[name] = template;
????}
????};
?????????????? QUnit ?????????
????JavaScript
????module("Templater");
????test("_supplant"?? function() {
????var templater = new Templater();
????equal(templater._supplant("{foo}"?? {foo: "bar"})?? "bar"))
????equal(templater._supplant("foo {bar}"?? {bar: "baz"})?? "foo baz"));
????});
????test("defineTemplate"?? function() {
????var templater = new Templater();
????templater.defineTemplate("foo"?? "{foo}");
????equal(template._templates.foo?? "{foo}");
????});
????test("render"?? function() {
????var templater = new Templater();
????templater.defineTemplate("hello"?? "hello {world}!");
????equal(templater.render("hello"?? {world: "internet"})?? "hello internet!");
????});
????module("Templater");
????test("_supplant"?? function() {
????var templater = new Templater();
????equal(templater._supplant("{foo}"?? {foo: "bar"})?? "bar"))
????equal(templater._supplant("foo {bar}"?? {bar: "baz"})?? "foo baz"));
????});
????test("defineTemplate"?? function() {
????var templater = new Templater();
????templater.defineTemplate("foo"?? "{foo}");
????equal(template._templates.foo?? "{foo}");
????});
????test("render"?? function() {
????var templater = new Templater();
????templater.defineTemplate("hello"?? "hello {world}!");
????equal(templater.render("hello"?? {world: "internet"})?? "hello internet!");
????});
???????????ж? render ???????????????? defineTemplate ?? supplant ???????????????????????????????????Щ?????????????????????????? render ??????????????????????μ??
??????д???????????????
???????κ??????У???????????????????????JavaScript ???????????????????? JavaScript ????????????????????????????????????????????????????磬?????????з??????????? window.location ???????????? URL rewriter ?????????????????????????????????????????????????????????????д?????????????????????????????????????Щ??????????????????????? window.location ?????????????????????????????????????????