Cadres JavaScript comme Prototype, JQuery, Yui, Maotools, Dojo, et al. Tous semblent cibler les développeurs côté client, en mettant l'accent sur l'activation des modèles d'interaction des utilisateurs communs à mettre en œuvre plus efficacement et avec moins de code. P>
Avec l'émergence de JavaScript côté serveur, ces cadres ont l'intention d'incorporer les normes de points communs afin d'activer la réutilisation de leurs fonctions de bibliothèque pour JavaScript côté serveur ou permettront-ils d'alternatives cadres tels que le nœud et Narwhal de gérer le côté serveur utiliser un cas? p>
(Je me rends compte que cette question est dangereusement proche d'une personne qui peut être discutée mais non répondue, mais je présume que la communauté de dépassement de la pile peut réellement répondre à la question avec des références spécifiques.) p>
8 Réponses :
Étant donné que la plupart de ces bibliothèques ciblent spécifiquement la DOM et sont conçues pour simplifier les API du navigateur et les problèmes inter-navigateurs, je ne sais pas quel avantage cela donnerait. P>
Le support des communJs n'est pas attendu dans JQuery 1.4. Il n'est pas non plus sur le JQUERY 1.5 RoadMap . P>
Dojo s'efforce d'être plus tout englobant et a un problème ouvert sur Ajout de support pour les points communs à Dojo mais il est marqué comme futur em>. p>
En général, je ne compterais pas dessus. P>
Comme tout le monde l'a déjà dit, la plupart des bibliothèques JavaScript sont des emballages sur le DOM pour la plupart. P>
Cependant, em>, je ne considérerais pas les points communs du côté serveur. Je pense qu'il y aura une place pour elle sur le côté du client, d'autant plus que JavaScript évolue vers un modèle de sécurité amélioré qui bénéficierait grandement d'une approche de la modularisation des points communs. P>
La plupart des API de commonJS sont des fonctionnalités orientées serveur que vous ne pourriez tout simplement pas implémenter dans le navigateur JS. Des modules actuels, Tous ceux qui sont tarifés, je ne suis pas sûr s'il y a vraiment quelque chose de beaucoup. Le io code>,
fs code>,
système code>,
sockets code> et
travailleur code> plus JSGI et al ne sont pas immentables par leur nature fondamentale. P>
codages code> aurait besoin d'énormes tables de données que vous ne voudriez pas construire dans une bibliothèque (à l'exception des codages intégrés de base que vous pouvez déjà gérer assez bien tel quel). D'autres fonctionnalités ne peuvent être prises en charge simplement car elles auraient besoin de fonctionnalités linguistiques telles que Getter / Setters qui ne peuvent pas être utilisées dans le navigateur en raison d'un mauvais support. P>
nécessite code> plomberie? P>
Pour moi, un point est de pouvoir partager des affaires logiques (objets de modèle et leur validation, etc.) entre client et serveur. Cela nécessite simplement que le soutien des modules. Vous corrigez certainement que la majeure partie de la norme ne s'applique pas au navigateur.
La façon dont je vois ce que nous faisons avec leonjs est que nous voulons pouvoir faire des modules qui font partie des systèmes plus importants qui fonctionnent à la fois côté client et côté serveur. J'ai déjà personnellement travaillé avec deux chargeuses de module Concronjs du côté client différents, et cela fonctionne très bien. P>
Dans le navigateur, vous pouvez utiliser la bibliothèque de manipulation DOM ou la boîte à outils latérale du client que vous souhaitez, ce qui n'interférera pas vraiment la possibilité de réutiliser des modules de commonJS à partir du serveur. P>
La réutilisation des utilitaires latérales du client sur le serveur peut toujours fonctionner aussi bien. Les modules de commonJS ont tous leur code exécuté dans une fermeture, de sorte que chaque module soit quelque chose d'indépendant des autres modules. Les bibliothèques basées sur le navigateur ont tendance à travailler avec des espaces de noms peuplés au niveau mondial. Jusqu'à présent, chaque plate-forme de commonjs sur le serveur peut toujours utiliser des globaux dans une mode ou une autre. P>
Tant que la bibliothèque elle-même est faite pour soutenir des environnements sans DOM (tels que Rhino), il devrait être possible de le faire fonctionner dans un environnement SSJ typique, mais pas dans les modules de commonjs. P>
Je ne trouve pas la source, mais j'ai entendu JQuery 1.4 va avoir tous les plugins dans ses packages emballés en tant que paquets communJs ( http://wiki.commonjs.org/wiki/packages/1.0 ). Cela ne signifie pas qu'ils seront tous des modules communs, mais c'est une étape dans la bonne direction et un signe que les choses bougent ainsi. P>
Il existe un package narval qui implémente un sous-ensemble de prototype: http: / /Github.com/smith/Prototype-asp/tree/narwhal-global . Il fonctionne également sur d'autres plates-formes SSJS. P>
Il y a un ticket ouvert sur le Dojo Trac pour ajouter le support de module Commonjs: http: //bugs.dojotoolkit .org / ticket / 9349 p>
Sproutcore, le cadre qui a Bespin et MobileMe, entre autres, prendra également en charge les points communs: http: // wiki .sproutcore.com / Tiki et 280 Nord, les fabricants de Cappuccino, emploient certains des principaux développeurs de narval. P>
Ainsi, il reste encore beaucoup de fragmentation entre différents cadres et entre client et serveur, mais il est tôt et les choses se déplacent dans la bonne direction. Je prédisons parfois à l'avenir que tous les principaux cadres JS auront une prise en charge des points communs sur le client, le serveur ou les deux. P>
groups.google.com/group/commonjs/browse_thread/thread/... La source est-elle probablement référencée. JQuery 1.4 et 1.4.1 ont déjà été libérés sans aucune structure de points communs - mais l'équipe exécutant le site des plugins JQuery semble avoir mis leur poids derrière des points communs pour emballage.
Il existe un cas pour utiliser les points communs avec le DOM lorsque vous parlez de * applications d'interface graphique non * navigateur, où l'accès au système d'exploitation n'aurait pas besoin d'être aussi restreint. Par exemple, cela serait très utile pour développer une application utilisant Mozilla a> Chromentique . p>
Juste une mise à jour rapide pour dire, ressemble à la longue durée toué (er, fabulée) motools 2.0, aka lait, aka Prime (nom de famille pour l'instant pour l'instant) a été déplacé vers CJS. P>
https://github.com/mooTools/prime p>
Cela ne veut pas dire que cela restera en tant que tel, la première itération de MotoTools 2.0 est venue il y a près de 2 ans. p>
Voici ma prise (je suis un développeur Yui): P>
Il semble que vous soyez deux angles à votre question. P>
On est sur le module d'emballage et de réutilisation des formats (CommonJS) et l'autre concerne l'idée générale des bibliothèques du côté client et de leur applicabilité au développement latéral du serveur. P>
Je ne suis pas vraiment la bonne personne à répondre à l'angle d'emballage, autrement que de dire que YUI 3 est intrinsèquement utilisé un système de module formel pour encapsuler et délivrer du code depuis le premier jour, et il fait partie intégrante de sa conception. Fournir un adaptateur ou une étape de construction pour livrer / traduire ces modules en Concrunjs est quelque chose que nous avons discuté. D'autres personnes de la communauté YUI qui ont été impliquées dans ce domaine peuvent avoir des informations plus précieuses à ajouter ici. P>
Sur le deuxième angle, je peux vous dire que le serveur est un environnement cible de première classe pour YUI. Il est tout aussi applicable sur le serveur que sur le client. Il existe un ensemble de modules qui n'ont aucun sens dans un environnement ou l'autre bien sûr, mais un gros morceau de la bibliothèque peut être utilisé des deux côtés de la clôture et il est consciemment construit pour le faire. P>
Par exemple, une grande partie des modules de Yui fournit une infrastructure et des utilitaires qui sont tout aussi applicables au développement de l'application sur le serveur, comme sur le client (événement personnalisé, attribut, base, intl, guidon, io, guidistebars, io, yql, type de données , DataSchema, Json, etc.). P>
C'est vraiment le but de conception du début - c'est un Web (faute d'un meilleur terme - je parle de la bibliothèque de développement d'applications JS / HTML / CSS Stack), pas seulement une bibliothèque d'abstraction DOM, ou juste une bibliothèque de widget. p>
Dav Glass a un poteau de blog avec un grand contenu sur le sujet: p>
http: //www.yuiblog. Com / Blog / 2011/11/07 / Rocking-Yui-On-Node-JS-and-Mobile / P>
Vous pouvez également consulter le 3.5.0 PRS: P>
http://stage.yuilibrary.com/yui/docs/yui/nodejs.htmlLe_ a> p>
Les bibliothèques que vous mentionnez tout enroulent l'API DOM. Je ne comprends pas la question de réutiliser ces bibliothèques sur le serveur, lorsque le serveur n'intègre pas un domaine réel comme ce que fournit le navigateur. Je ne suis peut-être pas assez imaginatif?
@Crescent frais, vous avez raison, il serait inutile mais peut-être qu'il aime utiliser des fonctions comme jQuery.each?
Le composant natif de MotooTools augmente certains constructeurs intégrés pour leur donner une fonctionnalité accrue sans rapport avec le DOM ( GITUB.COM/MooTools/MooTools-core/tree/Master/Source/native ); Je me demandais d'apporter ce genre de choses dans SSJS.
Stackoverflow.com/questions/1909615/... réponses beaucoup de questions Les gens pourraient avoir à propos de SSJS. J'utilise le côté du serveur JS avec ASP. Fonctionne comme un charme et je ne peux pas le recommander assez. Pas de choses Dom mais vous pouvez écrire un code sexy très propre et sexy. Motools désormais un côté serveur que vous téléchargez uniquement avec des extensions vers une matrice, une chaîne, une fonction, des événements (OUI Evénements côté serveur!), Classe, hachage, etc.
Pour plus d'informations sur la façon dont MotooTools prévoit incorporer des commonjs, voir groups.google.com / Groupe / Motoools-Utilisateurs / Browse_thread / Fil / ...