powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / отличие CSP от CLS
25 сообщений из 83, страница 2 из 4
отличие CSP от CLS
    #37086010
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Через csp практически невозможно отдать бинарный контент, так как вылезут пробелы и переводы строк, которые его испортят.
Через csp неудобно отдавать высокодинамичный контент, например через классы мы отдаем XML.
Тут да...
Добавлю еще что вебсервис также не организовать... Или это как раз твой второй пункт?


Блок А.Н.Через классы есть смысл делать библиотечные страницы, вызываемые из разных мест, так как у них постоянный url,
в отличии от csp, url которых может плавать.
А тут что-то яне понял... Чего там с урлом не так? Как он "плавает"?
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37086071
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
>Добавлю еще что вебсервис также не организовать... Или это как раз твой второй пункт?
вроде вебсервис частный случай обмена XML-документами :-)


>Как он "плавает"?
Когда открываемая страница в том же каталоге, что и текущая, то к ней можно обратиться так: "mypage2.csp"
Когда она в в подкаталоге от текущей, к ней можно обратиться так: "mydir/mypage2.csp"
Когда она в другом каталоге, то к ней можно обратиться примерно так: "../mydir2/mypage2.csp", а это неудобно, можно ошибиться
либо /myapp/mydir2/mypage2.csp, но я данном случае если вы на одном сервере захотите развернуть два приложения, вас ждет облом, так как имя приложения уже зашито в обращении.
Это тоже можно решить, вычисляя каждый раз изменившийся url, но это дополнительные замороки.
В отличии от csp, у класса всегда одинаковый url при вызове из любого места, и который корректно работает при смене имени приложения. Поэтому иногда есть смысл использовать класс для универсальных диалогов (календари и т.д.)
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37086154
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa doublefint, а csp аналог этому у тебя будет какой?

Посмотрите в начале темы, там некто под ником krvsa, приводит "корректное" сравнение наглядности csp кода и результатов его обработки генератором cls, демонстрируя торжество компилятора ИС над возможностями krvsa :)

krvsaЯ например жду демонстрацию такого типа:
- Вот как удобно в классе
- А вот неудобный аналог на csp

Это справедливо и конструктивно, я согласен. По мере возможности, буду приводить в этой ветке.
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37086171
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н. , про урл понял.
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37086209
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неудобно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<CSP:CLASS SUPER="%CSP.Page,MyApp.MyMethods" description="Этот атрибут уже не описан в документации. Что делать с многострочным комментарием? О боже, я не контролирую имя класса!!! Каким оно будет? У вас еще не было ошибки [Класс csp.melkimibukvami.cls уже существует] при импорте проекта или переименовании приложения? O_o Тогда мы идем к вам"/>
<!--
Это единственный известный мне способ задокументировать параметр класса.
Проблема только в том, что этот комментарий будет выводится каждому клиенту.
Но и это еще не все... А как же Класс - Переопределить - Параметры? :(
-->
<CSP:PARAMETER Name="CHARSET" Value="utf-8"/>
<!--
Вышеприведенный код после компиляции превратится во множество команд W !
И вы почти ничего не сможете с этим поделать (не жертвую читабельностью) 
Кстати, это неявное добавление символов станет дополнительной проблемой
,если вы, например, генерируете csv, rtf и т.д.
-->


удобно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
///Стандартный элемент проекта. Вы используете систему контроля версий? А зря.
///Имя класса точно известно, и регистрозависимо
///и не будет прыгать при переименовании приложение или файла.csp
///Документацию к классу можно оформить "как угодно"
///например,  см. <class>krvsa.anotherClass</class>
/Сlass krvsa.clsPage Extends (%CSP.Page,MyApp.MyMethods) {
  
   ///Используя Класс-Переопределить-Параметры находим такие, о которых даже не подозревали
   ///Спокойно документируем параметр, или читаем документацию к нему
   ///При этом на клиента ничего не будет отправлено, никаких $C( 13 , 10 ) или $C( 9 ) 
   Parameter CHARSET="utf-8";
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37086363
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
едем дальше. CLS.Удобно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
/// Опять документирование: методов <method>doSomething</method> 
/// и их параметров <var>args</var>, <var>when</var> 
/// Никогда не сдавали документацию по своему коду? 
ClassMethod doSomething(ByRef args as %String={"Hello:"_$h}, when as %Date={+$h}) as %Boolean {
  s $zt="errHandler" ;не используете обработку ошибок? А goto вместо for? ;)
  ;что-нибудь делаем
  Q  1  
errHandler
   s $zt="",$ze="" Q  0  
}
/// Эта документация не попадет на клиентский браузер
ClassMethod doSomething1(ByRef args as %String={"Hello:"_$h}, when as %Date={+$h}) as %Boolean { 

}
Готовы повторить на CSP не подсматривая?
CSP.Неудобно

CSP - это еще один язык. А некоторые вещи не найти в документации (если конечно ваш ник не servit ;)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<script type="cache" runat="server" method="doSomething" 
  arguments='&args:%String="Hello"_+$h,when:%Date=+$h' 
  returnType="%Boolean"
  description="Беда с документированием">
  
  ;я не знаю как в csp сделать метку, увы мне ;(

 Q  1 
  ;script><script - для подавления генерации команды w ! 
</script><script type="cache" runat="server" method="doSomething1" 
  arguments='&args:%String="Hello"_+$h,when:%Date=+$h' 
  returnType="%Boolean">
 Q  1   
</script>
Так что насчет наглядности, krvsa?
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37086430
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint , я пока ничего поучительного и "выгодного" в этих примерах неувидел, т.ч. извини...
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37086474
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неудобно: CSP "компоненты" - CSR. Это вообще совсем неудобно. Даже не буду приводить примеры. Еще один язык, со своими "тараканами". Отлаживать их - песня.
Удобно CLS: Обычный метод или класс. Можно даже не наследовать от %CSP.Page

Неудобно: CSP - оптимизация страниц. Не контролируете генерацию и вывод - не можете сжать и разнести html, js, css
Для каждой cspbind формы будет повторен типовой код проверки, сохранения, отображения, вывод ошибок.
Удобно: CLS - можете управлять любым аспектом вывода на страницу
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37086486
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint , не понятно про "разнос" html, js, css... Что имелось ввиду?
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37086511
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa, имелось в виду выполнение рекомендаций от анализатора YSLOW и применение инструментов
YUI compressor или google closure compiler
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087097
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint , т.е. это все невозможно для обычного приложения (не csp)? Не пойму чем провинились js и css если "связались" с csp?

Я правда особой пользу в "компрессе" текстов не вижу... Потому как трафик больше нагружают картинки и всякое другое отображение... Нежели js и css.
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087242
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa, ну почему же. Возможно:
1.Создаем csp страницу, заполняем как умеем, сохраняем.
2.Включаем просмотр другого кода, копируем.
3.Создаем новый класс - наследник %CSP.Page.
4.Вырезаем все лишнее, затачиваем под себя.
5.Разбиваем страницу на части: js, css, html и динамическое содержимое.
6.Выносим js,css,html во внешние файлы и обрабатываем их утилитами.

Начиная с пункта 3 - обычное программирование на cls

Все зависит от ваших потребностей и возможностей, я так думаю. У меня большая часть страницы это js, а
основной интерфейс - список объектов и редактирование объекта прямо на списке или в списке.
А значит нет потребности в cspbind и т.д. Сохранить объект без cspbind я могу как минимум 3 способами.
Зачем мне тогда неудобства сsp?

P.S. Кстати картинки тоже оптимизируют. Например, CSS-спрайты
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087421
cache hit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
doublefintедем дальше. CLS.Удобно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
/// Опять документирование: методов <method>doSomething</method> 
/// и их параметров <var>args</var>, <var>when</var> 
/// Никогда не сдавали документацию по своему коду? 
ClassMethod doSomething(ByRef args as %String={"Hello:"_$h}, when as %Date={+$h}) as %Boolean {
  s $zt="errHandler" ;не используете обработку ошибок? А goto вместо for? ;)
  ;что-нибудь делаем
  Q  1  
errHandler
   s $zt="",$ze="" Q  0  
}
/// Эта документация не попадет на клиентский браузер
ClassMethod doSomething1(ByRef args as %String={"Hello:"_$h}, when as %Date={+$h}) as %Boolean { 

}


В данном случае на CSP немного спасают <csp:comment> и try/catch, а в остальном я согласен с doublefint
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087456
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну чтобы не было идиллии в использовании CLS
В cls
- невозможно использовать CSR (можно, конечно, сделать методами, но не всегда это эквивалетно)
- сложнее использовать гиперевенты, больше действий, проще ошибиться, реализация меняется между версиями каше.
- сложнее квотить строки, иногда вообще страшные конструкции получаются

Метки, кстати, в csp-методах есть
вот так обозначаются
:metka
Пока непонятно, что мешает вынести часть содержимого csp наружу?
Сложной логики в csp не должно быть вообще, так что и особо документировать обычно нет необходимости.
Вся механика должны быть в классах, csp - это оболочка.
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087478
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint5.Разбиваем страницу на части: js, css, html и динамическое содержимое.
6.Выносим js,css,html во внешние файлы и обрабатываем их утилитами.
...
У меня большая часть страницы это js
Не понятно, зачем хранить на csp странице JS и css?
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087479
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.csp - это оболочка.
Так про что и разговор!
А то тут каких-то молохов уже делают из этих страниц...
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087483
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintКстати картинки тоже оптимизируют. Например, CSS-спрайты
Вот тут вообще не понял... Картинка она и в Африке картинка... Как её цсска-то "оптимизирует"?
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087488
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintа основной интерфейс - список объектов и редактирование объекта прямо на списке или в списке.
А значит нет потребности в cspbind и т.д. Сохранить объект без cspbind я могу как минимум 3 способами.
Про формы редактирования интересно было бы посмотреть... Как ты организуешь редактирование экземпляров класса без cspbind? Потому как это в csp действительно практически "не программируемо"...
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087513
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле мы тоже использует cspbind только в самых простых случаях.
Часто при создании объекта нужно делать какие-то дополнительные действия, проверки и т.д.
Можно, конечно, поизвращаться с триггерами, %OnValidate и т.д., но мы делаем проще: создаем методы Edit/Create/Delete, в которых все нужное делаем и отдаем информацию об ошибке, если она была.
Соответственно, при редактировании объекта вызываем эти методы простым гиперевентом.

И, эта, я не понял, что не программируемо в csp?
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087563
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.И, эта, я не понял, что не программируемо в csp?
Приходится явно писать в csp странице

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<form name='fAdhoc' cspbind='oAdhoc' method='post' action='adhoc.csp' onsubmit='return Save()'>
<!--Основные переменные-->
<input type='hidden' name='adhoc' value='#(%request.Data("adhoc", 1 ))#'>

<!--Основная структурная таблица-->
<table width=' 100 %' border=' 0 '>
<tr>
<td valign='top' width=' 90 %'>
<h1>Элемент</h1>
<!--Таблица данных-->
<table border=' 0 '>
<tr>
<td>Название
<td><input type='text' name='tName' cspbind='Name' title='Название элемента досылки в формате $system.OBJ.*'>
<tr>
<td>Описание
<td><input type='text' name='tTitle' cspbind='Title' title='Описание или назначение элемента досылки '>
</table>
<td valign='top'>
<!--Таблица кнопок-->
<table border=' 0 '>
<tr>
<td><input type='button' value='На начало' onclick='Go("info.csp")'>
<tr>
<td><input type='button' value='Выход' onclick='Go("adhocall.csp")'>
<tr>
<td><input type='submit' value='Записать'>
<tr>
<td><input type='button' value='Удалить' onclick='DelAdhoc(#(%request.Data("adhoc", 1 ))#)'>
</table>
</table>
</form>
Все поля редактирования с привязкой к соответствующим полям экземпляра класса... Для следующего класса опять приходится все явно прописывать...
Т.е. у нас нет "общей" какой-то процедурки, которая могла бы сгенерить поля редактирования какого-то произвольного класса.
Ранее как-то пытался поспрашивать как такое можно сделать программно... Но предложения по такой реализации меня не впечатлили. Отказался от этой затеи...
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087589
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так и так,
минимальный дизайн придется делать, опять же, откуда брать селекторы.

Вот, посмотрите страничку, может пригодится. Делал тыщу лет назад, нам не пригодилась.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
<html>
<head>
</head>
<style>
body {font-family:Verdana,Arial;font-size: 15 ;}
th {background-color:#b0b0c0;}
.d {background-color:#e0e0e0;color=#a0a0a0}
.l {background-color:#CFD1DA;}
.b {background-color:#aAaFC1;}
.gray {background-color:#CFD1DA;border-style:none;}
.error {background-color:#FFCCCC;font-weight:bold;color:red}
td,th {border-style:none;text-align:left}
a {text-decoration:none;color:blue;}
</style>
<body>
<script language=cache runat=server>
 s classname=%request.Get("classname")
 s id=%request.Get("id")
 s addon=%request.Get("addon")
 
 s ClassList=##class(%ResultSet).%New("%ClassDefinition:ClassInfo")
 d ClassList.Execute()
 w "<form name=f1>"
 w "<table border=1><tr class=l>"
 w "<td><select name=classname>"
 while ClassList.Next() 
 	   {s clname=ClassList.Get("Name")
 	    if (ClassList.Get("Persistent")= 1 ) && ($f(clname,"%")= 0 )
 		      {w "<option ",$case(clname,classname:"selected",:""),">",clname,"</option>"
 		      }
 	   }
 d ClassList.%Close()
 w "<td><input type=text name=id value=",id," >"
 w "<td><input type=submit class=b value='==>'>"
 w "<input type=button class=b value='<==' onclick='history.back()'>"
 w "</table>"
 w "<form>"
 
 //Открываем объект по Id и classname
 q:(classname="")&&(addon="")
 if addon=""
     {s exist="",classlist="",ob=""
      x:id'="" "s exist=##class("_classname_").%ExistsId("_id_")"    //проверить, существует ли объект
      x:exist= 1  "s ob=##class("_classname_").%OpenId("_id_")"   //открыть объект
     } 
 else 
     {x addon
      s classname=ob.%ClassName( 1 )
      s exist= 1 
     }
 
 w "<table border=1 valign=top><th>Поле<th>Значение<th><th>Тип<th>Описание"
 s def=##class(%ClassDefinition).%OpenId(classname)
 s classlist=def.Super_","_classname
 d def.%Close()

 f i= 1 : 1 :$l(classlist,",")
     {s classname=$p(classlist,",",i)
      w "<tr><td>",classname
      
      s def=##class(%ClassDefinition).%OpenId(classname)      
      s key=""
      d def.Properties.GetNext(.key)  
      while key'="" 
         {s fieldname=def.Properties.GetAt(key).Name 
 	        s collection=def.Properties.GetAt(key).Collection
 	        s type=def.Properties.GetAt(key).Type
 	        s private=def.Properties.GetAt(key).Private 
 	        s description=def.Properties.GetAt(key).Description

 	        w "<tr class=l><td>",fieldname
 	        w "<td>"
 	        g:'exist next
 	        if private= 1  w "<i><закрыто>" g next                                               //закрытое поле	        
 	        if collection=""
 	            {s val=""
 	             x "s val=ob."_fieldname  
 	             s addon=##class(%CSP.Page).EscapeURL("s ob=##class("_classname_").%OpenId("_id_"),ob=ob."_fieldname)                                                         
 	             w ..DecodeValue(val,type,addon)
 	            }
 	        if collection="array"
 	            {s key2=""                                                       
 	             x "d ob."_fieldname_".GetNext(.key2)"
 	             w:key2="" "<i><пусто>"
 	             while key2'=""
 	                 {x "s val=ob."_fieldname_".GetAt(key2)"
 	                  s addon=##class(%CSP.Page).EscapeURL("s ob=##class("_classname_").%OpenId("_id_"),ob=ob."_fieldname_".GetAt("_key2_")")
 	                  w "<div>",key2,"->",..DecodeValue(val,type,addon),"</div>"
 	                  x "d ob."_fieldname_".GetNext(.key2)"
 	                 }
 	            }
:next 	        
 	        w "<td>",collection
 	        w "<td>",type
 	        w "<td><pre>",description,"</td>"
          d def.Properties.GetNext(.key)
         }
     }
 w "</table>" 
</script>
<script language=cache method=DecodeValue Arguments='data:%String,fieldtype:%String,addon:%String=""' returntype="%String">
 n def2,persistent,id2,ret,i
 if data="" q "<i><пусто>"                                                                               //пустое поле
 if (type="%Library.Date")||(fieldtype="%Date") q:data= 0  "<i><нулевая дата>"                             //нулевая дата
 if (type="%Library.Date")||(fieldtype="%Date") q:$zd(data, 3 ,, 4 )="" "<i><неправильная дата>("_val_")"    //нулевая дата
 if (type="%Library.Date")||(fieldtype="%Date") q $zd(data, 3 ,, 4 )                                             //дата
 if (type="%Library.List")||(fieldtype="%List") q "<i><список>"  

 //проверим, является ли тип хранимым классом
 s def2=##class(%ClassDefinition).%OpenId(fieldtype)
 s persistent=def2.Persistent
 s:persistent id2=data.%Id()
 d def2.%Close()	 
 if persistent q "<a href=Browser.csp?classname="_fieldtype_"&id="_id2_">"_id2_"</a>" 
 q:$e(type, 1 , 1 )'="%" "<a href='Browser.csp?addon="_addon_"'>OREF</a>"
 q "<b>"_val
</script>

</body>
</html>
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087622
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.- невозможно использовать CSR (можно, конечно, сделать методами, но не всегда это эквивалетно)
- сложнее использовать гиперевенты, больше действий, проще ошибиться, реализация меняется между версиями каше.
- сложнее квотить строки, иногда вообще страшные конструкции получаются


-Конечно имхо, но CSR лучше вообще не использовать. Нет отладки и тестирования
-Не столкнулся пока, наверно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<script type="text/javascript">
function serverCall(args) {
 var res=#(..HyperEventCall("..MyServerMethod","args"))#;
 //или
 var callback="alert"; 
 #(..HyperEventCall("..ServerAsyncMethod","args,callback", 1 ))#;
}
</script> 
- &js<> и &html<> существенно облегчают жизнь. Не так страшно как в режиме CodeMode=generator :)

P.S. за :metka спасибо. Где нашли? :)
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087668
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Пока непонятно, что мешает вынести часть содержимого csp наружу?
Сложной логики в csp не должно быть вообще, так что и особо документировать обычно нет необходимости.
Вся механика должны быть в классах, csp - это оболочка.

- Использование cspbind и прочих макросов генератора
- Зависит от сложности интерфейса, не так ли?
- Наследники CSP.%Page - это классы. Обычные. Что мешает их нормально использовать? Правильно - CSP :)
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087691
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я знаю, что гиперевенты можно так делать,
но все-таки немножко между версиями отличается, например, вроде упразднили ..HyperEventBody(),
да и вообще механизм работы гиперевентов дорабатывался.
&js,&html какая-то противоестественная вещь. Раз уж работаем в каше-методе, то надо на его языке и писать :-)

На csr пробовал что-то делать, не пошло.
Простые вещи можно и без них делать, сложные нужно в CodeMode=generator, а писать программу, которая должна сгенерить программу, которая должна сгенерить HTML+программы на яваскрите оказалось выше моих сил и я сдался. Вот там кстати с одними кавычками убийство.
Но используем библиотечку CSR-овскую, которая много автоматизирует.

:metka была всегда, я так понял, ее у Ptn и их компании подсмотрели.
...
Рейтинг: 0 / 0
отличие CSP от CLS
    #37087695
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Вот тут вообще не понял... Картинка она и в Африке картинка... Как её цсска-то "оптимизирует"?

Все изображения со страницы сливаются в одно. Большое изображение лучше жмется, получается с сервера за один запрос. Для отображения используют backround-position. яндекс в помощь
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 2 из 4
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / отличие CSP от CLS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]