Q:

SharePoint Custom JS file Best Practice

I made a custom master page.
I also made a custom CSS file, which I uploaded to "Style Library".
I link to this CSS file by:
<SharePoint:CssRegistration name="<% $SPUrl:~SiteCollection/Style Library/coe/mainCOE.css%>" runat="server"/>

Now I want to make a custom JS file, and link to it in the custom master page.
1. Where should I upload the JS file, make a folder like the "Style Library"?
2. Is there a SharePoint way to link to the JS file, like the one above for a CSS file?

A:

You can store JS files in the _layouts folder, but storing them in the Style Library gives you workflow/change history for free.
If you keep your JS files in the Style Library you can reference them in your MasterPage using the ~sitecollection token by using the <SharePoint:Scriptlink> tag, like so:
<SharePoint:Scriptlink runat="server" Name="~sitecollection/Style Library/[YOUR SITE]/js/functions.js" Language="javascript" />

A:

Use Style Library and use CssRegistration and ScriptLink if they work. But sometimes SharePoint puts the links in an order you don't want. In that case, you can use the following to directly insert the references:
<link rel="stylesheet" type="text/css" href="<% $SPUrl:~SiteCollection/Style Library/coe/mainCOE.css%>" runat="server"/>
<script type="text/javascript" language="javascript" src='<asp:Literal runat="server" Text="<%$SPUrl:~SiteCollection/Style Library/coe/mainCOE.js%>" />'></script>

A:

You can upload that js file in site collection document library, if you want to get this to all site collections then please create a folder in side layouts and paste it there. And refer this is in your custome master page.

