Лекция
Привет, сегодня поговорим про одностраничный клиент на javascript, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое одностраничный клиент на javascript , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend).
var Movie = Backbone.Model.extend({});
matrix = new Movie();
matrix.set({
title: "The Matrix",
format: "dvd'
});
matrix.get('title');
matrix = new Movie({
title: "The Matrix",
format: "dvd'
});
var Movie = Backbone.Model.extend({
initialize: function (spec) {
if (!spec || !spec.title || !spec.format) {
throw "InvalidConstructArgs";
}
}
});
var Movie = Backbone.Model.extend({
validate: function (attrs) {
if (attrs.title) {
if (!_.isString(attrs.title) || attrs.title.length === 0 ) {
return "Название должно быть непустой строкой";
}
}
}
});
var MovieList = Backbone.Collection.extend({
model: Movie
});
var library = new MovieList();
library.add({
title: "The Big Lebowski",
format: "VHS"
});
var MovieView = Backbone.View.extend({
render: function() {
var context = _.extend(this.model.toJSON(), {cid: this.model.cid});
this.el = ich.movie(context);
return this;
}
});
var MovieAppController = Backbone.Controller.extend({
initialize: function(params) {
this.model = new MovieAppModel();
this.view = new MovieAppView({ model: this.model });
params.append_at.append(this.view.render().el);
},
routes: {
"movie/add": "add",
"movie/remove/:number": "remove",
},
add: function() {
app.model.movies.add(new Movie({
title: 'The Martix' + Math.floor(Math.random()*11),
format: 'dvd'
}));
// сбросим путь чтобы метод можно было вызвать еще раз
this.saveLocation();
},
remove: function(cid) {
app.model.movies.remove(app.model.movies.getByCid(cid));
this.saveLocation();
}
});
var MovieAppModel = Backbone.Model.extend({
initialize: function() {
this.movies = new MovieList();
}
});
var MovieAppView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, "addMovie", "removeMovie");
this.model.movies.bind('add', this.addMovie);
this.model.movies.bind('remove', this.removeMovie);
},
render: function() {
$(this.el).html(ich.app(this.model.toJSON()));
this.movieList = this.$('#movieList');
return this;
},
addMovie: function(movie) {
var view = new MovieView({model: movie});
this.movieList.append(view.render().el);
},
removeMovie: function(movie) {
this.$('#movie_' + movie.cid).remove();
}
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Movie App</title>
<!-- libs -->
<script src="js/lib/jquery.js"></script>
<script src="js/lib/underscore.js"></script>
<script src="js/lib/backbone.js"></script>
<!-- templating -->
<script src="js/lib/mustache.js"></script>
<script src="js/lib/ICanHaz.js"></script>
<!-- app -->
<script src="js/app/Movie.js"></script>
<script src="js/app/MovieCollection.js"></script>
<script src="js/app/MovieView.js"></script>
<script src="js/app/MovieAppModel.js"></script>
<script src="js/app/MovieAppView.js"></script>
<script src="js/app/MovieAppController.js"></script>
<script type="text/javascript">
$(function() {
var movieApp = new MovieAppController({append_at: $('body')});
window.app = movieApp;
Backbone.history.start();
});
</script>
<!-- ich templates -->
<script id="app" type="text/html">
<h1>Movie App</h1>
<a href="#movie/add">add new movie</a>
<ul id="movieList"></ul>
</script>
<script id="movie" type="text/html">
<li id="movie_{{ cid }}"><span class="title">{{ title }}</span> <span>{{ format }}</span> <a href="#movie/remove/{{ cid }}">x</a></li>
</script>
</head>
<body>
</body>
</html>
К сожалению, в одной статье не просто дать все знания про одностраничный клиент на javascript. Но я - старался. Если ты проявишь интерес к раскрытию подробностей,я обязательно напишу продолжение! Надеюсь, что теперь ты понял что такое одностраничный клиент на javascript и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)
Из статьи мы узнали кратко, но содержательно про одностраничный клиент на javascript
Комментарии
Оставить комментарий
Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)
Термины: Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)