2009-10-06 11 views
12

Lorsque je développe une application, je veux utiliser jquery-1.3.2.js, et quand je la déploie, je veux utiliser jquery -1.3.2.min.js?basculer entre jquery-1.3.2.js et jquery-1.3.2.min.js

Quelle est la meilleure façon de basculer entre deux sans commenter manuellement et sans en commenter un.

Merci.

+2

Pourquoi n'utilisez-vous pas toujours le min? – recursive

+0

parfois, je veux déboguer dans une fonction jquery, je pense que le non-min est plus lisible. –

Répondre

2

Nommez les deux fichiers jquery.js par exemple, et placez-les dans un dossier (libs) Lorsque vous définissez, ne déployez pas le dossier lib.

+0

Ou utilisez simplement un lien symbolique. –

+0

Est-ce que Windows a des liens symboliques? – middus

2

Je suis sûr que quelqu'un peut traduire cette réponse en asp.net: Je fais un conditionnel basé sur mon APPLICATION_ENVIRONMENT défini dans mes projets. Vous ne savez pas s'il y a une chose similaire dans asp.net, mais si vous êtes sur un serveur de production, vous pouvez servir .min - et sur une machine de développement/test, vous pouvez servir la bibliothèque complète.

1

Si vous ajoutez par programme la déclaration, alors la meilleure façon est d'utiliser le

#if DEBUG 

directive du compilateur. Dans la zone DEBUG, utilisez votre bibliothèque entièrement développée, et dans le non-DEBUG (lorsque vous compilez en mode Release pour la publication) mettez la version .min. Ensuite, vous ne devez vous soucier de vous assurer que vous compilez Release quand vous allez vivre.

Vous pouvez également avoir des fichiers .config distincts pour vos différents environnements de publication et spécifier votre javascript.

MSDN link to compiler directives.

+0

Cela semble être la même chose dont je parle dans ma réponse. – gnarf

+0

Semble être. Sauf que je suggère 2 alternatives et j'ai aussi inclus des exemples et des liens, qui sont généralement plus utiles. En outre, cela est étiqueté asp.net-mvc, donc ma réponse était .net spécifique. Donc vraiment, pas si semblable. – Evildonald

0

Vous pouvez nommer script jquery.js. Et ajoutez deux autres fichiers js. Le premier sera nommé jquery.js.debug, autre onw jquery.js.release. Et lors de la compilation, utilisez le fichier js approprié. Je l'utilise pour changer les fichiers web.config. Des informations supplémentaires peuvent être fondées here.

0

Si vous utilisez django, vous pouvez utiliser django-compress pour gérer cela automatiquement.

8

J'ai une méthode d'extension HtmlHelper pour charger mes fichiers JavaScript. Il ressemble à quelque chose comme ça ...

public static string JavascriptTag(this HtmlHelper html, string javascriptName) 
{ 
    var format = "<script src=\"/Content/Scripts/{0}.js\" type=\"text/javascript\"></script>\r\n"; 

#if (!DEBUG) 
    javascriptName += ".min"; 
#endif 

    return string.Format(format, javascriptName); 
} 

qui est appelé tout simplement aiment:

<%= Html.JavascriptTag("jquery-1.3.2") %> 
<%= Html.JavascriptTag("general") %> 

je peux utiliser cette convention parce que j'ai aussi une tâche de construction qui prend tous les fichiers JS dans mon contenu/répertoire scripts, les minimise puis insère .min dans le nom de fichier.

Si vous ne possédez pas ce luxe, vous pouvez utiliser une variation comme ceci:

public static string JavascriptTag(this HtmlHelper html, string devFileName, string liveFileName) 
{ 
    var format = "<script src=\"{0}\" type=\"text/javascript\"></script>\r\n"; 

    var fileNameToUse = devFileName; 
#if (!DEBUG) 
    fileNameToUse = liveFileName; 
#endif 

    return string.Format(format, fileNameToUse); 
} 

qui pourrait alors être appelé comme:

<%= Html.JavascriptTag("/Content/Scripts/jquery-1.3.2.js", "/Content/Scripts/jquery-1.3.2.min.js") %> 
<%= Html.JavascriptTag("/Content/Scripts/general.js", "/Content/Scripts/general.min.js") %> 

Un bonus supplémentaire de l'approche ci-dessus est que vous pouvez utiliser un CDN pour les bibliothèques, par exemple

<%= Html.JavascriptTag("/Content/Scripts/jquery-1.8.2.js", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js") %> 
Questions connexes