Models - данные при своем изменении сообщают об этом наблюдателям.
Views - следят за изменением в моделях и отображают данные на экране.
Controllers - отслеживают что происходит когда пользователь взаимодейтсвует с интерфейсом view.
Router - отслеживает переходы пользователя по URL и вызывает соответсвующие им функции.
Observer - отслеживает изменения в данных.
Пример модуля:
/calendar
- calendar.Model.js
- calendar.View.html
- calendar.Controller.js
- calendar.Router.js
- calendar.Css.css
/calendar/img/calendar.icon.png
/calendar/img/calendar.dark.background.png
var calendar = {};
calendar.Model = {};
calendar.View = {};
calendar.Controller = {};
calendar.Router = {};
calendar.Observer = {};
понедельник, 23 марта 2015 г.
вторник, 10 марта 2015 г.
URL Parsing with JavaScript
Server-side URL Parsing
// Server-side JavaScript
var urlapi = require('url'),
url = urlapi.parse('http://site.com:81/path/page?a=1&b=2#hash');
console.log(
url.href + '\n' + // the full URL
url.protocol + '\n' + // http:
url.hostname + '\n' + // site.com
url.port + '\n' + // 81
url.pathname + '\n' + // /path/page
url.search + '\n' + // ?a=1&b=2
url.hash // #hash
);
Client-side URL Parsing
// Client-side JavaScript
// find the first link in the DOM
var url = document.getElementsByTagName('a')[0];
console.log(
url.href + '\n' + // the full URL
url.protocol + '\n' + // http:
url.hostname + '\n' + // site.com
url.port + '\n' + // 81
url.pathname + '\n' + // /path/page
url.search + '\n' + // ?a=1&b=2
url.hash // #hash
);
If we have a URL string, we can use it on an in-memory anchor element (a) so it can be parsed without regular expressions, e.g.:
// Client-side JavaScript
// create dummy link
var url = document.createElement('a');
url.href = 'http://site.com:81/path/page?a=1&b=2#hash';
console.log(url.hostname); // site.com
Isomorphic URL Parsing
// lib.js library functions
// running on Node.js?
var isNode = (typeof module === 'object' && module.exports);
// alternative check of running on Node.js?
// var isNode = typeof window === 'undefined';
(function(lib) {
"use strict";
// require Node URL API
var url = (isNode ? require('url') : null);
// parse URL
lib.URLparse = function(str) {
if (isNode) {
return url.parse(str);
}
else {
url = document.createElement('a');
url.href = str;
return url;
}
}
})(isNode ? module.exports : this.lib = {});
Server-side, URLparse is exported as a Common.JS module. To use it:
// include lib.js module
var lib = require('./lib.js');
var url = lib.URLparse('http://site.com:81/path/page?a=1&b=2#hash');
console.log(
url.href + '\n' + // the full URL
url.protocol + '\n' + // http:
url.hostname + '\n' + // site.com
url.port + '\n' + // 81
url.pathname + '\n' + // /path/page
url.search + '\n' + // ?a=1&b=2
url.hash // #hash
);
Client-side, URLparse is added as a method to the global lib object:
<script src="./lib.js"></script>
<script>
var url = lib.URLparse('http://site.com:81/path/page?a=1&b=2#hash');
console.log(
url.href + '\n' + // the full URL
url.protocol + '\n' + // http:
url.hostname + '\n' + // site.com
url.port + '\n' + // 81
url.pathname + '\n' + // /path/page
url.search + '\n' + // ?a=1&b=2
url.hash // #hash
);
</script>
Подписаться на:
Сообщения (Atom)