31 votes

RequireJS: Multiple main.js?

J'ai été la construction d'une seule page de l'app à l'aide de requireJS et la mesure de l'aimer. J'en suis venu au point de développer les autres parties du site à l'extérieur de l'application principale et ne suis pas vraiment sûr de savoir comment (ou si) à utiliser requireJS pour cela.

Dans mon application principale tout est déclenchée par cette balise de script:

<script data-main='/scripts/main' src='/scripts/libs/require.js'>

Je suis en train de développer la page d'accueil qui dispose de sa propre avant la fin de scripts. En utilisant l'optimiseur quand il est question d'obtenir un site en ligne qui permettra de regrouper toutes ces scripts dans un main.js package. J'ai du mal à comprendre où est le reste de mon site s'inscrit dans cette.

Dire que mon application est dépendante sur jQuery et il obtient emmitouflé dans la version optimisée de l'application, que faire si je veux utiliser jQuery sur la page d'accueil? Je ne veux pas charger dans mon application main.js juste pour avoir accès à mon jQuery module. Donc ouais... un peu confus!


Je suis en imaginant une structure de site un peu comme ceci:

/scripts
  - app-main.js //(includes all module dependencies after optimzation)
  - home-main.js //(includes all module dependencies after optimzation)

App:

<script data-main='/scripts/app-main' src='/scripts/libs/require.js'>

Page d'accueil:

<script data-main='/scripts/home-main' src='/scripts/libs/require.js'>


Questions

  1. Comment puis-je utiliser RequireJS pour développer les différentes parties d'un site?
  2. Est-il recommandé d'avoir plusieurs main.js fichiers?
  3. Comment mon différente main.js partage de fichiers modules communs tels que jQuery post d'optimisation?

38voto

PutzKipa Points 3103

Le requirejs équipe a quelques échantillons pour les pages d'applications sur github. Jetez un oeil à: https://github.com/requirejs/example-multipage

Fondamentalement, vous allez avoir la structure suivante:

  • page1.html: page 1 de l'app.

  • page2.html: page 2 de l'application.

  • js application: le répertoire app store-des modules spécifiques.

  • lib: le répertoire de tenir des modules tiers, comme jQuery.

  • common.js: contient les requirejs de config, et il sera la cible de construction pour l'ensemble des modules communs.

  • page1.js: les données utilisées pour l'-main pour page1.html. Charge le module commun, puis charge app/main1, le module principal pour la page 1.

  • page2.js: les données utilisées pour l'-main pour page2.html. Charge le module commun, puis charge app/main2, le module principal de la page 2.

-1voto

Thomas Davis Points 1633

Donc require.js devrait toujours être utilisé sur n'importe quelle page pour permettre une modularité et une propre espace de noms. Je crois que chaque application a besoin de son propre main.js script. Lors de l'optimisation de votre site r.js permet de vous exclure les modules à partir de la compilation que vous devriez faire pour jQuery toujours.

De cette façon require.js toujours charger jquery.js à la volée, et la plupart du temps à partir du cache. Recherche d'autres modules qui peuvent être mis en cache entre votre application et la page d'accueil devra être fait à votre propre discrétion et dépend de la fluidité de vos utilisateurs et d'autres facteurs.

Il semble que vous avez deux projets, une application et un marketing de site. Je crois que celles-ci doivent être séparés de tout un étendre et doivent avoir leur propre 'js' dossiers qui contiennent leur propre main.js.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X