Суть фреймворка
Добрый день.
Возникло задание написать свой js фреймворк. Погуглил я значит, чтобы понять. Но только еще больше запутался. Как я понимаю, фреймворк- это каркас, штука, которая соединяет различные компоненты приложения. только вот прочитал, что jQuery- это фреймворк, а я всегда думал что обычные библиотеки. В чем вообще отличие фреймворков от библиотек и чем суть фреймворков? И может ли кто нибудь привести код самого простого и элементарного(собственног ) фреймворка, который выполняет самую элементарную функцию- чтобы на его примере я понял? Если кто откликнется- спасибо огромное |
|
о_О эээ
правильно ли я понял- чтобы создать новый фреймворк- мне просто надо создать функции, которые будут выполнять какие то действия. потом создать команды, и эти комады приравнять к функция. чтобы когда в скрипте вводилась команда она уже знала заведомо, что она будет делать?(криво как то написал) может кто приведет пример такой хоть из 5-10 строчек? |
Для какой цели вы будете писать Framework?
Если для себя, то это должны придумать вы. |
Вроде уже более- менее разобрался с этим. спасибо за ответы
|
Lynatik,
в вики не судьба посмотреть?)) |
Serg_pnz Смотрел.что то вот пробую.я просто новичок в этом, поэтому все туго идет еще. туго, но интересно)
Возник еще вопрос. зачем фреймворк заключают во временную функцию? (function(window) { })(window); Вот,к примеру, к примеру, скрипт с названием frame.js. если заключать в эту функцию, то не работает. А если не заключать, то все работает, и прямоугольник нормально закрашивается в красный.
(function(window)
{
function IsString(selector)
{
return typeof(selector)=='string';
}
function o_O(selector)
{
//является ли селектор строкой
var obj=IsString(selector)?document.getElementById(selector):selector;
//меняем класс CSS
obj.name=function(clname)
{
this.className=clname;
return this;
}
//цвет фона
obj.pic=function()
{
obj.style.backgroundColor='red';
return this;
}
return obj;
}
})(window);
А вот html с прямоугольником
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Тестирование фреймворка</title>
<script type="text/javascript" src="frame.js"></script>
</head>
<body>
<script language="javascript">
function fon()
{
o_O('id').pic();
}
</script>
<form>
<input type="button" value="первая" onClick="fon()">
<div id="id" style="width:400px; height:300px; border:3px solid black;">
</div>
</body>
</html>
|
Цитата:
в приведённом выше коде -не зачем. ошибки в каждой строке. Я конечно понимаю, что это передранный фрамевёрк + ошибки . копать -с какой целью расширяется, для чего методы возвращают this .... Вобщем учить основы С такими вопросами ещё рано думать о либах и фрамевёрках. Знания о замыканиях и прочем, судя по всему, отсутствуют. Цитата:
|
dmitriymar,
я думал возврат this нужен для того, чтобы можно было подряд несколько методов через точку указывать. так я и учу основы. и периодически спрашиваю то, что не понимаю. нельзя в одночасье стать очень шаристым в чем-то. спасибо Вам за критику) |
Цитата:
Цитата:
http://www.ozon.ru/context/detail/id/6287517/ |
<script type="text/javascript">
function obj(val) {
return{
funct:function(set) {
return{
callback:function() {
return val+' -> '+set;
}
};
}
};
}
alert(obj('Text object').funct('Funct name').callback());
</script>
|
суть фреймворка проще понять так:
в нормальном мире приложение используют библиотеки, в мире фреймворка библиотека использует приложения) иначе говоря - фреймворк реализует некоторую инфраструктуру накладывающую некоторые ограничения на приложения, но взамен дающую некоторые удобства. jquery - это конечно никакой не фреймворк. |
Цитата:
попробую проще (это на грани ИМХО) :
|
тогда уж проще википедию процитировать) каркас предоставляющий точки расширения, реализуя которые, получаешь готовое приложение
|
спасибо всем за ответы.вроде понял суть фреймворков.
Следуя критике dmitriymar сижу читаю основы, но ведь теория скучная без практики. читал читал, так и не совсем понял насчет this. ведь this же вызывает контекст того метода, в котором была вызвана функция. к примеру
var b;
b.col=function()
{
this.style.backgroundColor='black'; // это тоже самое, что и b.slyle.backgroundColor
}
а если обернуть эту функцию в другую, к примеру
function a()
{
var b;
b.col=function()
{
this.style.backgroundColor='black';
return this; //если тут вернуть this,
//то оно опять же будет возвращать b...
}
//и добавить еще что нибудь
b.img=function()
{
this.style.backgroundImage='1.jpg';
return this; //тут тоже возвращает b...
}
return b;
}
this.a=a;//будет как window.a
то, по идее, можно же вызывать a().b.col().img() что я неправильно понимаю? |
Следуя сообщению выше,в частности, вот элементарный скрипт. пожалуйста, поругайте меня и ткните носом в баги.
(function(window){
function o_o(selector)
{
var sel=selector+'';
var id=document.getElementById(sel);
id.col=function()
{
this.style.backgroundColor='red';
return this;
}
id.font=function()
{
this.style.fontSize='100px';
return this;
}
return id;
}
window.o_o=o_o;
})(window);
|
для большего понимания что такое this пара статей с хабра
Ключевое слово this в javascript — учимся определять контекст на практике Пять способов вызвать функцию ну а по коду... за чем вы делаете var sel = selector+''; лучше проверить является ли объект строкой и выдать ошибку, что неправильный параметр, и не дергать лишний раз DOM если все таки искомого селектора не будет var id = document.getElementById(sel); id будет null и определение функций вызовет ошибку так что перед определением надо делать проверку на null |
"FrameWork" - значит собранный каркас для облегчения разработки или создания, какой либо модели для управления.
Как например "JQuery" библиотека содержит в себе компоненты и конкретные задачи. Данный функционал переопределяет принципы разработки на javascript для более удобного использования и разных возможностей, без написания длинных кодов. |
| Часовой пояс GMT +3, время: 22:59. |