Skip to content

Commit

Permalink
Refactor dynamic loading, upgrade node, add vue files
Browse files Browse the repository at this point in the history
* Switch from Node 5 to 6
* Add vue-loader to webpack
* Refactor some vue components to .vue files
* Remove unused dependencies from package.json, especially node-gyp, that thing really messed with Travis and is not actually used.
* Use import instead of require.ensure for dynamicRequire (now JS, instead of CS)
* Add commented out lines for skipping compilation of parts of the application. When commented out, this speeds up webpack a great deal. If we find this useful, would like to turn this into some sort of command (like webpack --watch --focus admin,editor would only build the admin and editor bundles).
  • Loading branch information
sderickson committed Jan 20, 2018
1 parent e1cc6a7 commit 6f6a471
Show file tree
Hide file tree
Showing 32 changed files with 1,012 additions and 762 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
@@ -1,7 +1,7 @@
sudo: false
language: node_js
node_js:
- 5.10.1
- 6.12.2
env:
- CXX=g++-4.8
services:
Expand Down
9 changes: 4 additions & 5 deletions app/core/Router.coffee
Expand Up @@ -105,8 +105,8 @@ module.exports = class CocoRouter extends Backbone.Router
'courses/:courseID/:courseInstanceID': -> @navigate("/students/#{arguments[0]}/#{arguments[1]}", {trigger: true, replace: true}) # Redirected 9/3/16

'db/*path': 'routeToServer'
'docs/components': go('docs/ComponentsDocumentationView')
'docs/systems': go('docs/SystemsDocumentationView')
'docs/components': go('editor/docs/ComponentsDocumentationView')
'docs/systems': go('editor/docs/SystemsDocumentationView')

'editor': go('CommunityView')

Expand All @@ -122,7 +122,6 @@ module.exports = class CocoRouter extends Backbone.Router
'editor/campaign/:campaignID': go('editor/campaign/CampaignEditorView')
'editor/poll': go('editor/poll/PollSearchView')
'editor/poll/:articleID': go('editor/poll/PollEditView')
'editor/thang-tasks': go('editor/ThangTasksView')
'editor/verifier': go('editor/verifier/VerifierView')
'editor/verifier/:levelID': go('editor/verifier/VerifierView')
'editor/i18n-verifier/:levelID': go('editor/verifier/i18nVerifierView')
Expand Down Expand Up @@ -258,7 +257,7 @@ module.exports = class CocoRouter extends Backbone.Router

path = "views/#{path}" if not _.string.startsWith(path, 'views/')
Promise.all([
dynamicRequire(path), # Load the view file
dynamicRequire[path](), # Load the view file
# The locale load is already initialized by `application`, just need the promise
locale.load(me.get('preferredLanguage', true))
]).then ([ViewClass]) =>
Expand Down Expand Up @@ -346,7 +345,7 @@ module.exports = class CocoRouter extends Backbone.Router
onNavigate: (e, recursive=false) ->
@viewLoad = new ViewLoadTimer() unless recursive
if _.isString e.viewClass
dynamicRequire(e.viewClass).then (viewClass) =>
dynamicRequire[e.viewClass]().then (viewClass) =>
@onNavigate(_.assign({}, e, {viewClass}), true)
return

Expand Down
6 changes: 6 additions & 0 deletions app/core/api/clas.coffee
@@ -0,0 +1,6 @@
fetchJson = require './fetch-json'

module.exports = {
getAll: (options={}) ->
fetchJson("/db/cla.submissions", options)
}
3 changes: 3 additions & 0 deletions app/core/api/courses.coffee
Expand Up @@ -3,4 +3,7 @@ fetchJson = require './fetch-json'
module.exports = {
get: ({courseID}, options={}) ->
fetchJson("/db/course/#{courseID}", options)

getAll: (options={}) ->
fetchJson("/db/course", options)
}
14 changes: 14 additions & 0 deletions app/core/api/files.coffee
@@ -0,0 +1,14 @@
fetchJson = require './fetch-json'

module.exports = {
getDirectory: ({path}, options={}) ->
unless _.string.endsWith(path, '/')
path = path + '/'
fetchJson("/file/#{path}", options).then((res) -> return JSON.parse(res))

saveFile: ({url, filename, mimetype, path, force}, options={}) ->
fetchJson('/file', _.assign({}, options, {
method: 'POST'
json: { url, filename, mimetype, path, force }
}))
}
2 changes: 2 additions & 0 deletions app/core/api/index.coffee
Expand Up @@ -3,9 +3,11 @@ module.exports = {
apcsp: require('./apcsp')
analyticsLogEvents: require('./analytics-log-events')
campaigns: require('./campaigns')
clas: require('./clas')
classrooms: require('./classrooms')
courses: require('./courses')
courseInstances: require('./course-instances')
files: require('./files')
levels: require('./levels')
levelSessions: require('./level-sessions')
markdown: require('./markdown')
Expand Down
3 changes: 3 additions & 0 deletions app/core/store/modules/me.coffee
Expand Up @@ -14,6 +14,9 @@ module.exports = {
if lang in ['zh', 'ru', 'es', 'fr', 'pt', 'de', 'nl', 'lt']
link += "c/other-languages/#{lang}"
link
isAdmin: (state) ->
permissions = state.permissions or []
return permissions.indexOf('admin') > -1

mutations:
updateUser: (state, updates) ->
Expand Down
124 changes: 0 additions & 124 deletions app/lib/dynamicRequire.coffee

This file was deleted.

117 changes: 117 additions & 0 deletions app/lib/dynamicRequire.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions app/locale/locale.coffee
Expand Up @@ -72,6 +72,7 @@ Object.defineProperties module.exports,
enumerable: false
value: (langCode) ->
console.log "Loading locale:", langCode
return Promise.resolve() if langCode in ['en', 'en-US']
promises = [
new Promise (accept, reject) ->
require('bundle-loader?lazy&name=[name]!locale/'+langCode)((localeData) -> accept(localeData))
Expand Down

0 comments on commit 6f6a471

Please sign in to comment.