Answered by:
JS files management and Intellisense

Question
-
Hi,
I'm building a multi page application and I'm asking some questions about JS files management.
I've declared my app's JS files in default.html, and some in my home.html file. My question is the followinng : why does Intellisense not recognize the classes declared in default.html when I work in home.js ? This wouldn't have been a problem if the mentionned classes were not present in home.js 's scope, but in fact they are and the only thing that is not working is Intellisense (no auto-completion).
I have to precise that I mainly use the "module" pattern in my JS files :
(function() { var MyClass = WinJS.Class.define({.....}); WinJS.Namespace.define('MyApp', {MyClass: MyClass}); })();
If the scope were destroyed when loading a new page like in "real life", I would understand that behavior, but it is not the case, and redeclaring JS files in pages html seems to be a lack of performances. Also, and as far as I've understood the "navigation template" 's mechanism, the application still remains single page...
But maybe there is something I'm missing ?
- Edited by Sylvain ESTEVEZ Sunday, November 24, 2013 11:17 AM
Sunday, November 24, 2013 11:03 AM
Answers
-
The class needs to be parsed and in scope for intellisense to work. There is no performance penalty for including the file in your pages (it all gets compiled down when you build the release version of your app).
Jeff Sanders (MSFT)
@jsandersrocks - Windows Store Developer Solutions @WSDevSol
Getting Started With Windows Azure Mobile Services development? Click here
Getting Started With Windows Phone or Store app development? Click here
My Team Blog: Windows Store & Phone Developer Solutions
My Blog: Http Client Protocol Issues (and other fun stuff I support)- Proposed as answer by Jeff SandersMicrosoft employee, Moderator Monday, November 25, 2013 3:47 PM
- Marked as answer by Jamles HezModerator Tuesday, December 3, 2013 7:20 AM
Monday, November 25, 2013 3:47 PMModerator
All replies
-
The class needs to be parsed and in scope for intellisense to work. There is no performance penalty for including the file in your pages (it all gets compiled down when you build the release version of your app).
Jeff Sanders (MSFT)
@jsandersrocks - Windows Store Developer Solutions @WSDevSol
Getting Started With Windows Azure Mobile Services development? Click here
Getting Started With Windows Phone or Store app development? Click here
My Team Blog: Windows Store & Phone Developer Solutions
My Blog: Http Client Protocol Issues (and other fun stuff I support)- Proposed as answer by Jeff SandersMicrosoft employee, Moderator Monday, November 25, 2013 3:47 PM
- Marked as answer by Jamles HezModerator Tuesday, December 3, 2013 7:20 AM
Monday, November 25, 2013 3:47 PMModerator -
Hi Jeff,
thanks for answering. I take note about the compilation trick.
But even if I understand the logic behind what you said, and as a personal consideration, I think that Intellisense should consider the application for what it is : a single page application. I regularly use frameworks like Backbone.js and Ember.js, and as a developer, my first mind is that all JS files should be shared from default.html to pages.
I just wanted to give my opinion about that...
Thanks anyway
- Edited by Sylvain ESTEVEZ Monday, November 25, 2013 5:52 PM
Monday, November 25, 2013 5:44 PM