Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Трансляция Intersystems Cache` кода в JS .  [new]
MyasnikovIA
Member

Откуда: Новосибирск
Сообщений: 26
Доброго времени суток. Уважаемые коллеги выношу на общий суд следующею технологию. Цель моего обращения, это получить конструктивную критику более опытного сообщества. В связи с этим прошу не задавать вопросы , наподобие “ Зачем это надо?... ” . Возьмём за константу факт “Это надо.”
Появилась необходимость хранить JS код и Cache` в одном месте, что позволит вести документацию разработке в одном формате (единый глобальный поиск в коде).Так же очень сильно раздражала реализация синхронных запросов при вызове класс-методов из JS кода. Еще хотелось бы хранить исходный код в одном месте, без применения внешних CSP файлов (js).
Имея на руках Cache` 2013 , идею и пул задач, решаемых моими коллегами я реализовал библиотеку HTML.CacheLib.
И так на что способна эта библиотека:
1) Хранение исходного кода JS в клиент-методе и передача его клиенту.
Создаем класс:
Class Demo.CacheLibTest003 Extends %CSP.Page
{
         ClassMethod OnPage() As %Status
         {
            &html<
                    <script src='HTML.CacheLib.cls' type='text/javascript' ></script>
                   <script type='text/javascript' >
                       alert(MyRead());
                 </script>
            >
           Quit $$$OK
      }

       /// получаем время 
       ClientMethod MyRead() As %String [ Language = javascript, WebMethod ]
       {
              return 'Время: /*( w $ZDT($h) )*/';
        }
}


Пояснения: В созданном классе присутствует вызов библиотеки <script src='HTML.CacheLib.cls' type='text/javascript' ></script>.
При вызове это страницы происходит вычитывание структуры класса из глобала ^oddDEF . Вычитываются методы у которых в свойствах указаны параметры WebMethod  и Language = javascript и передает содержимое этих методов клиенту. Если в тексте присутствуют скобки в виде символов /*( Однострочный Код Cache` )*/ , тогда содержимое скобок выполняется как однострочный код, и результат помещается вместо этих скобок. Описание клиент-метода тоже передается клиенту перед телом функции.
Код полученный из класса помещается в конец “HTML.Cache.cls” .
Если “HTML.Cache” обозначить как суперкласс нового класса User.TestJS , тогда можно будет подключать новый класс следующим образом <script src='User.TestJS.cls' type='text/javascript' ></script>. Он также будет интерпретирован в JS код. Этот метод позволить создавать JS библиотеки в Cache` классах.

2) Асинхронный вызов класс-метода Cache` из JS кода.
Создаем класс:
Class Demo.CacheLibTest004 Extends %CSP.Page
{
       ClassMethod OnPage() As %Status
       {
        &html<
                <script src='HTML.CacheLib.cls' type='text/javascript' ></script>
                <script type='text/javascript' >
               
                 // функция для обработки результат 
                 var CallBackFun=function(txt){ alert(txt); }
                 
                 //Асинхронный запрос
                 runMethod('Demo.CacheLibTest004.CacheBlaBlaBla',CallBackFun,' Асинхронный запрос класс-метода '); 
              
                        //Синхронный запрос
                 var txt=runMethod('Demo.CacheLibTest004.CacheBlaBlaBla',' Синхронный запрос '); 
                 alert(txt);
               </script>
              >
           Quit $$$OK
       }

       /// Класс метод, который будем вызывать из JS
       ClassMethod CacheBlaBlaBla(msg)
       {
         w $zdt($h)_":"_msg
       }
}

Пояснения: Механизм вызова JS функции runMethod скопирован из "/csp/broker/cspxmlhttp.js" и"/csp/broker/cspbroker.js" , с небольшой модификацией для работы с асинхронными запросами. Думаю инженеры компании Intersystems могут взять на заметку данный метод, и в дальнейшем в новых релизах всё-таки внедрить асинхронные запросы. В JS не составит труда анализировать второй аргумент, и если он является функцией, тогда считать это асинхронным запросом и результат запроса передавать в аргументнуюу функцию. Мой метод является не очень защищенный, так как название вызываемого класс-метода, передается в нешифрованном виде.
3) Добавлена возможность динамического подключения CSS и JS библиотек
 <script language="JavaScript"> 
                // Подключаем библиотеку JS из класса
              includeClass('HTML.js.WebGL.BabylonJS.babylon.cls','javascript'); 
               // Подключаем JS библиотеку из файла
              includeFile('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js','javascript'); 
              // Подключаем JS библиотеку из файла
              includeFile('https://jQuery.min.js'); 
               // Подключаем CSS библиотеку из файла
              includeFile('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css','css'); 
   </script>

Пояснение: Обращаться к вновь подключенным библиотекам можно будет сразу же после полной загрузке страницы.
4) Создание JS прототипов в Cache классе.(создание JS классов).
Создаем прототип:
Class User.Prototyp Extends HTML.CacheLib
{
/// Альтернативное название прототипа. 
/// Если этого параметра нет, тогда имя прототипа
/// берется из имени класса “Prototyp”
Parameter ClassName = "ClassName";
/// Публичные переменные прототипа
Property Pole1 As %String [ InitialExpression = "Value1", Internal ];
Property Pole2 As %String [ InitialExpression = "Value2", Internal ];
Property Pole3 As %String [ Internal ];
/// Конструктор прототипа
ClientMethod prototyp(arg1 = "") As %String [ Internal, Language = javascript ]
{
   this.Pole1=arg1;
}
ClassMethod Test(Arg) As %String [ Internal, Language = cache ]
{
   w $zdt(+$h)_": "_Arg	
   q ""
}
ClientMethod Test3(arg1 = "") As %String [ Internal, Language = javascript ]
{
   alert(arg1);
}
}

Применение прототипа в CSP страницы :
<html>
<head>
<title> Cache Server Page </title>
</head>
<body>
  <script src='HTML.CacheLib.cls' type='text/javascript' ></script>
  <script src='User.Prototyp.cls' type='text/javascript' ></script>
  <script  language="JavaScript">
      var edit=new ClassName('ArgClassName');// Создаем экземпляр прототипа
      alert(edit.Pole1); // обращение к переменной
      alert( runMethod('User.Prototyp.Test','dddddddddd') );
      alert(edit.Test('+++++++MSG2+++++'));// синхронный вызов функции
      retunFun=function(txt){ alert(txt); }
      edit.Test(retunFun,'-----MSG3----'); // асинхронный вызов
      edit.Test3('Args123')
  </script>
</body>
</html>

 
5) Создание собственного HTML элемента в Cache классе (работа с прототипами).
Создаем прототип HTML элемента:
Class User.Prototyp2 Extends HTML.CacheLib
{
/// Название класса для создания элемента из JS
Parameter ClassName = "TestHtmlTag";
/// имя тэга <my-input>0</my-input>
Parameter tagName = "my-input";
Property timer As %Integer [ InitialExpression = 0, Internal ];
/// содержимое Тэга
Property innerHTML As %String [ InitialExpression = "Value1", Internal ];
/// JS Конструктор HTML элемента
ClientMethod prototyp2(arg1 = "") As %String [ Internal, Language = javascript ]
{
  this.Pole1=arg1;
}
/// запуск таймера
ClientMethod attachedCallback() As %String [ Internal, Language = javascript ]
{
   setInterval(this.tick.bind(this), 1000);
}
/// Функция срабатывает после создания элемента (инициализация)
ClientMethod createdCallback() As %String [ Internal, Language = javascript ]
{
   this.timer = 0;
}
/// функция инкремента
ClientMethod tick() As %String [ Internal, Language = javascript ]
{
    this.timer++;
    this.innerHTML = this.timer;
}

}

Создание HTML элемента в CSP файле
<html>
<head>
<title> Cache Server Page </title>
</head>
<body>
  <script src='HTML.CacheLib.cls' type='text/javascript' ></script>
  <script src='User.Prototyp2.cls' type='text/javascript' ></script>
  <my-input>222222</my-input>
</body>
</html>

Пример взят с сайта: https://learn.javascript.ru/webcomponent-core

В библиотеке присутствуют и другие JS функции, которые на мой взгляд будут полезны. Но основное уже описал.
В итоге повторно озвучиваю пожелания к сообществу. Для дальнейшего развития необходимо конструктивная критика что на ваш взгляд сделано не правильно.

К сообщению приложен файл (HTML.CacheLib.xml - 96Kb) cкачать
2 окт 17, 14:59    [20836517]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2395
Может я как то сильно бегло прочитал, но не заметил "трансляции Caché кода в JS", как заявлено в названии темы.
То что вы изобрели, ничего нового не вижу. Но при этом подходы ваши я бы назвал уже несколько устаревшими.
Вы затрагиваете тему Веба, а он сейчас довольно быстро развивается и вы игнорируете некоторые новые возможности. И это касается не только JS/CSS, вы даже не все возможности Caché применяете.

И советую все таки перейти на более свежую версию Caché. Все таки на дворе 2017 год, а у вас 2013 версия.
2 окт 17, 15:49    [20836667]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 728
А я вот тоже не совсем понял..?
Вроде все это есть в ZEN-технологии..?
Или там кардинально все не так..?
2 окт 17, 15:52    [20836674]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
MyasnikovIA
Member

Откуда: Новосибирск
Сообщений: 26
DAiMor,

Если бы я был уверен, что тут все отлично, то не стал бы подремать эту тему.
В описании действительности не слово не сказал о трансляции. Это мое упущение , библиотека предназначена для трансляции кода, от сюда и тема.

Функция трансляции присутствует в библиотеке. Суть работы этого метода: Сначала инициируются переменные в Cache , желательно в методе ProcessMethod=1, или глобальные переменные «%var» потом запускается метод
do ##class(HTML.CacheLib).DrawObj() 
он как раз и интерпретирует в JS код все инициированные переменные.

Множите хотя бы поверхностно озвучить (на ваш взгляд) какие технологии я упускаю.
P/s
Вопросу покупки современной версии Cache` увы не в моей компетенции, Работаю на том, что предоставил работодатель.
2 окт 17, 16:25    [20836802]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
MyasnikovIA
Member

Откуда: Новосибирск
Сообщений: 26
AlexKB,

Не могу ответить на ваш вопрос, потому, что в принципе не работал с ZEN-технологией, на практике. Чисто гипотетически вы правы, эти технологии похожи .
Если конечно ZEN поддерживает асинхронные запросы... Но опять же это все гипотетически.
В организации где я работаю не применяют эту технологию.
2 окт 17, 16:35    [20836840]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
MyasnikovIA
Member

Откуда: Новосибирск
Сообщений: 26
DAiMor,

Исправляю упущение...

Class Demo.InterJS Extends %CSP.Page
{

      ClassMethod OnPage() As %Status [ ProcedureBlock = 0 ]
       {
           &html< <script src='HTML.CacheLib.cls' type='text/javascript' ></script>        >
           &html< <body></body>>
           s a=11111
          ; Создаем элемент INPUT и вешаем на него JS функцию
           s MyFun="function(){alert(222);}"
           s inp3=##class(%ZEN.proxyObject).%New()
           s inp3.parentElement="body"
           s inp3.tagName="input"
           s inp3.value=$h
           s inp3.onclick="MyFun"
           w "<script>"
           do ##class(HTML.CacheLib).DrawObj()
           w "</script>"
           Quit $$$OK
      }
}
2 окт 17, 16:46    [20836886]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 728
MyasnikovIA,
Понятно.
Я еще с 2007 версии как сел на ZEN, так пока что лучшего себе и не желаю.
Методы сервера с клиента можно вызывать как синхронно, так и асинхронно. Но Вам уже это неинтересно, поскольку корпоративные правила изменить одному работнику очень трудно, почти не возможно, имея даже семь пядей во лбу!
Но может классы ZEN Вам в чем то и помогут, при рассмотрении кода...
2 окт 17, 17:02    [20836929]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
MyasnikovIA
Member

Откуда: Новосибирск
Сообщений: 26
Пример 2

Class Demo.Elements.Style Extends %RegisteredObject
{
   Property background As %String;
}


Class Demo.Elements.element Extends %RegisteredObject
{
   Parameter NS = "http://www.w3.org/1999/xhtml";
   /// Название объекта JS (обязательно)
   Property tagName As %String [ InitialExpression = "div" ];
   /// Название родительского элемента (если пусто тогда объект помещается в 'body')
   Property parentElement As %DataType;
   Property value As %String;
   Property innerHTML As %String;
   Property onclick As %String;
   Property style As Demo.Elements.Style [ InitialExpression = {##class(Demo.Elements.Style).%New()} ];
}





Class Demo.TestCacheLib3 Extends %CSP.Page
{

ClassMethod OnPage() As %Status [ ProcedureBlock = 0 ]
{
    // &html< <script src='HTML.CacheLib.cls' type='text/javascript' ></script>        >
     s a=11111
    ; Создаем элемент INPUT и вешаем на него JS функцию
     s MyFun="function(){alert(222);}"
     s inp3=##class(Demo.Elements.element).%New()
     s inp3.parentElement="body"
     s inp3.tagName="input"
     s inp3.value=$h
     s inp3.style.background="red"
     s inp3.onclick="MyFun"
     
     s obj=##class(%ZEN.proxyObject).%New()
     s obj.NS="http://www.w3.org/1999/xhtml"
     s obj.parentElement="body"
     s obj.tagName="input"
     s obj.value=$zdt($h)
     s obj.onclick="MyFun"
     
     w "<script>"
     do ##class(HTML.CacheLib).DrawObj()
     w "</script>"
     Quit $$$OK
}

}
2 окт 17, 17:56    [20837102]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
MyasnikovIA
Member

Откуда: Новосибирск
Сообщений: 26
Для доступа к библиотеке из любой области имен на сервере, скопировал HTML.CacheLib в %ZHTML.CacheLib

Подключении в HTML:
<script type="text/javascript" src="%25ZHTML.CacheLib.cls"></script> 


Дописал дописал пару примеров в описание класса.

К сообщению приложен файл (%ZHTML.CacheLib.xml - 107Kb) cкачать
2 окт 17, 18:12    [20837144]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12876
MyasnikovIA
В связи с этим прошу не задавать вопросы , наподобие “ Зачем это надо?... ” . Возьмём за константу факт “Это надо.”

Тогда особо и обсуждать нечего... Разве, что "лизать" со всех сторон это "надо" и не более того.
3 окт 17, 09:09    [20837926]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
MyasnikovIA
Member

Откуда: Новосибирск
Сообщений: 26
krvsa,

В принципе я получил ответ на свой вопрос можно считать вопрос закрыт.
Этот подход к написанию кода необходим в тех случаях, когда ZEN технология не применяется в компании, а очень хочется как-нибудь шаблонизировать типичные компоненты, чтобы не таскать из класса в класс один и тот же фрагмент кода, а написал в одном месте JS логику в cache структуре ( ну и связал её конечно же), Написал инструкцию в документации (Description) и в дальнейшем только вызывал или добавлял свои HTML компоненты.
Удобная форма переноса кода из проекта в проект. Выгрузил компоненты (классы) в xml , и загрузил в новом проекте, без каких либо настроек.
Так же такой подход помогает держать человеческое описание логики Cache и JS в одном месте. Это удобно в тех случаях, когда один модуль разрабатывает несколько человек.
Происходит постепенный отказ работы с внешними файлами (*.js,*.css).
Пожалуй, это основное.
3 окт 17, 09:38    [20837996]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12876
MyasnikovIA
В принципе я получил ответ на свой вопрос можно считать вопрос закрыт.

Как говаривал наш завкафедры - ЧТД...
3 окт 17, 09:40    [20838005]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
EvLaUy
Member

Откуда: Москва
Сообщений: 2068
krvsa,
не будьте столь строги. Понятно, что революции в технологиях Intersystems человек не совершил, и на Нобелевскую премию эта разработка не тянет. Но тот факт, что есть еще люди, которые сами себе ставят какие-то новые (по их мнению) технические задачи в рамках технологии, решают их и получают от этого удовольствие является весьма отрадным и говорит о том, что опасности захиреть и закиснуть у сообщества все-таки нет.
3 окт 17, 10:51    [20838252]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12876
EvLaUy
что опасности захиреть и закиснуть у сообщества все-таки нет.

Так пока это кто-то оплачивает не захиреем!
3 окт 17, 11:03    [20838303]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1427
MyasnikovIA,

Работодатель доверил вам разработку технологии, существующий аналог которой (Zen) доверия ему не внушает. Несмотря на то, что Zen худо-бедно поддерживается ISC, вам, похоже, доверяют больше :)

Соглашусь с EvLaUy: хорошо, что кто-то идёт своим путём и даже где-то против течения. Читая community, видишь много материалов с пропагандой переноса многих прикладных и сервисных функций за пределы COS: на Java, JS, даже на Python. Это в общем-то понятно: в ISC и к её партнёрам за последние несколько десятков лет пришло немало народу, которые энтузиастами M[umps] никогда не были, и им сподручнее "пилить" что-то снаружи. "Пусть M/Cache используется как база, а прикладной код мы реализуем на одном из "современных" языков" - такое нередко приходится читать, даже на comp.lang.mumps. А здесь - практически M-классика: давайте всем управлять из одного места. Респект.
3 окт 17, 11:29    [20838412]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 728
Alexey Maslov,
Тут главное, чтобы не получилось так, как со мной...
На одном из предприятий, где я работал, шеф вызывает и говорит мне - Каше ведь все может, давай сделай так, чтобы Каше принимал данные от измерительных приборов, обрабатывал их вырабатывал команды управления на исполнительные механизмы, в соответствии с динамически изменяемыми алгоритмами, понятное дело архивировал, и отображал все это на LabView, прямо в его родных компонентах (осциллографы, вольтметры и все что там есть). А главное, чтобы программировать не в LabView, а в Каше. Чтобы из описаний, которые есть в Каше, строились экраны LabView и там все отображалось. И еще, чтобы программировать не на языке Каше, а на уровне технологических понятий, алгоритмы программировать либо в табличном виде, либо в виде блок-схем, второе лучше, но на первом этапе сойдет и таблицами.
И что вы думаете, когда были созданы первые работающие прототипы его желаний, когда он увидел, что все это можно реализовать, нужно только довести уровень прототипа до уровня реальной системы, он сказал - все это фигня, нам это не надо, будем и дальше писать все на С++.

Поэтому хочу пожелать, чтобы такого не случилось с автором темы!
А на Каше можно сделать очень много чего интересного, полезного, нужного - нужна только политическая воля руководства!
3 окт 17, 16:25    [20839498]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
EvLaUy
Member

Откуда: Москва
Сообщений: 2068
AlexKB,
Вы реально круты. Но такое случается со всеми программистами. Все мы пишем замечательные проги, которые в результате оказываются никому не нужны. Но ничего страшного в этом нет - зарплата-то идет. А вот если такое случилось, когда на себя работаешь, - тогда беда.
3 окт 17, 16:55    [20839620]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
MyasnikovIA
Member

Откуда: Новосибирск
Сообщений: 26
Открою тайну, в моем случае политической воли руководства в разработке не участвовала. Все строится на голом энтузиазме и классической человеческой лени. Разработка вилась в полулегальном состоянии. Главная цель облегчить себе жизнь в будущем. Именно по этому в библиотеке собрано много дополнительных функций.

Написав функцию в Cache я хотел к ней обращаться сразу же из JS по её имени и с аргументами. Подключив эту библиотеку я автоматически получаю такую возможность , не тратя времени на преобразование и вызов класс методов.

Пример такого вызова:

Class User.CacheLibTest001 Extends %CSP.Page
{
   ClassMethod OnPage() As %Status
   {
      &html<
         <script src='HTML.CacheLib.cls' type='text/javascript' ></script> 
         <script language="javascript">
             alert( CacheMsg('Аргумент1') ) ;
             JSMsg('Сообщение 2')
         </script>
      >
      Quit $$$OK
    }
   /// Mетод Cache
   ClassMethod CacheMsg(arg) As %String [ Language = cache, WebMethod ]
  {
        w $ZDt($h)_":"_arg
        q ""
  }
  /// Метод JS
  ClassMethod JSMsg(arg) [ Language = "javascript", WebMethod ]
  {
       alert(arg);
   }
}
3 окт 17, 19:36    [20840102]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
MyasnikovIA
Member

Откуда: Новосибирск
Сообщений: 26
допустил небольшую ошибочку при написании


JSMsg должен объявятся как ClientMethod а не ClassMethod


Код с исправлением:
Class User.CacheLibTest001 Extends %CSP.Page
{

ClassMethod OnPage() As %Status
{
 &html<
    <script src='HTML.CacheLib.cls' type='text/javascript' ></script>        
    <script language="javascript">
      alert( CacheMsg('Аргумент1') ) ;
      JSMsg('Сообщение 2')
   </script>
  >
  Quit $$$OK
}

/// Mетод Cache
ClassMethod CacheMsg(arg) As %String [ Language = cache, WebMethod ]
{
    w $ZDt($h)_":"_arg
    q ""
}

/// Метод JS
ClientMethod JSMsg(arg) [ Language = javascript, WebMethod ]
{
    alert(arg);
}

}
3 окт 17, 19:41    [20840103]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
EvLaUy
Member

Откуда: Москва
Сообщений: 2068
MyasnikovIA,
может быть, Вам стОит опубликовать статью на habrahabr? Странно, что Евгений до сих пор не порекомендовал Вам это сделать. Но давать такие рекомендации - конечно же, его прерогатива, я пас.
4 окт 17, 10:07    [20841037]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2395
MyasnikovIA,

К сожалению не получалось написать раньше чуть более развернуто мои замечания.
Так вот, вы работаете с вебом, который развивается довольно быстро и JS ушел уже далеко вперед как и CSS.

Современный веб-проект, должен быть написан как минимум на JS2015 с модульностью. И для стилей лучше использовать SASS.
Я если честно не пробовал такую связку и писать при этом в Студии и все в классах. Для меня это выглядит несколько дико.

Проект который я начинал с нуля для Caché. Это Angular2/4 приложение, в качестве фронтенда и бекенд в виде REST на Caché. И нет никакой необходимости писать JS в Caché. Поверьте мне, не смешивать все в одном месте, гораздо эффективнее.

Бекенд и фронтенд должны быть раздельными, в этом реально есть смысл, даже если поддержкой занимается один человек.

Сейчас у меня есть еще один проект с ZEN, и я уже думаю как бы его сконвертировать во что-то более менее современное Angular/React/Vue
4 окт 17, 11:13    [20841354]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
EvLaUy
Member

Откуда: Москва
Сообщений: 2068
DAiMor
Поверьте мне, не смешивать все в одном месте, гораздо эффективнее.

В научном сообществе, когда человек говорит "более эффективно" или "менее эффективно", его обычно сразу спрашивают - какие критерии эффективности он имеет в виду. Иначе такие фразы - ни о чем, и будут проигнорированы. Возможно, что для Вашей задачи эффективнее не смешивать, а для задачи ТС-а - наоборот.
4 окт 17, 11:45    [20841489]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2395
EvLaUy
DAiMor
Поверьте мне, не смешивать все в одном месте, гораздо эффективнее.

В научном сообществе, когда человек говорит "более эффективно" или "менее эффективно", его обычно сразу спрашивают - какие критерии эффективности он имеет в виду. Иначе такие фразы - ни о чем, и будут проигнорированы. Возможно, что для Вашей задачи эффективнее не смешивать, а для задачи ТС-а - наоборот.
Данные выводы основаны на личном опыте.
4 окт 17, 12:04    [20841583]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
Sheonn
Member

Откуда:
Сообщений: 9
С современными подходами во фронтенде эта технология не согласуется. Писать код js и html в классах то еще "удовольствие".
То что не обновляются системные js библиотеки и вообще работа с js, html, по-моему говорит о том, что в интерсистемс перестали пытаться догнать веб. Т.е. делаем нужные вещи сами с подходящими инструментами.
И если уж хочется писать для браузера на COS, то транслировать его в WASM
4 окт 17, 18:16    [20843206]     Ответить | Цитировать Сообщить модератору
 Re: Трансляция Intersystems Cache` кода в JS .  [new]
MyasnikovIA
Member

Откуда: Новосибирск
Сообщений: 26
Я обратил внимание на то, что чаще всего озвучиваются технологии , которые были стандартизированы не так давно не ранее 2015г. Некоторые из них находятся в стадии разработки. И поддерживаются не всеми браузерами. Все они очень интересные и конечно обладают большими плюсами. Но не будем забывать, что деятельность программиста состоит в предоставлении заказчику готовый программный продукт. Который стабильно работает, и развертывается на уже действующей компьютерной инфраструктуре. На пример на моей предыдущей работе в качестве стандарта был взят IE8. Для того, чтобы перейти на Angular версии выше 1.2 работодатель должен был вложить в обновление парка ПК, довольна приличные средства (большинство компьютеров на XP).Он отказался это делать, так как поставленные задачи вполне могли решатся и старыми средствами разработки. Конечно со временем произойдет обновление, но пока не будет заменен последний ПК оператора, технология не будет изменена «Скорость эскадры определяется скоростью самого тихоходного судна этой эскадры».

Конечно это сильно утрированный пример, но думаю многие сталкивались с нежеланием заказчиков вкладываться в развитие технологий , только по той причине, что они новые интересные, и открывают иные подходы для решения типичных задач. Работодатель будет «жмотится» до последнего, но из этого и состоит рынок а мы являемся частью этой деятельности.

Всем большое спасибо. Вы мне очень помогли. Благодаря вашим высказываниям, я примерно понял в каком направлении стоит развивать эту технологию. Конечно же не для нобелевской премии :) , а для себя ленивого.
4 окт 17, 19:29    [20843372]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Caché Ответить