Skip to content

Commit 634ff20

Browse files
committed
Merge remote-tracking branch 'nuxt/master'
2 parents 59a0df8 + 0d7e0ca commit 634ff20

File tree

13 files changed

+53
-13
lines changed

13 files changed

+53
-13
lines changed

examples/with-sockets/nuxt.config.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
module.exports = {
22
build: {
33
vendor: ['socket.io-client']
4+
},
5+
head: {
6+
meta: [
7+
{ charset: 'utf-8' },
8+
{ name: 'viewport', content: 'width=device-width, initial-scale=1' }
9+
]
10+
},
11+
env: {
12+
HOST_URL: process.env.HOST_URL || 'http://localhost:3000'
413
}
514
}

examples/with-sockets/pages/index.vue

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<ul class="pages">
44
<li class="chat page">
55
<div class="chatArea">
6-
<ul class="messages">
6+
<ul class="messages" ref="messages">
77
<li class="message" v-for="message in messages"><i :title="message.date">{{ message.date.split('T')[1].slice(0, -2) }}</i>: {{ message.text }}</li>
88
</ul>
99
</div>
@@ -25,11 +25,17 @@ export default {
2525
})
2626
})
2727
},
28+
watch: {
29+
'messages': 'scrollToBottom'
30+
},
2831
beforeMount () {
2932
socket.on('new-message', (message) => {
3033
this.messages.push(message)
3134
})
3235
},
36+
mounted () {
37+
this.scrollToBottom()
38+
},
3339
methods: {
3440
sendMessage () {
3541
if (!this.message.trim()) return
@@ -40,6 +46,11 @@ export default {
4046
this.messages.push(message)
4147
this.message = ''
4248
socket.emit('send-message', message)
49+
},
50+
scrollToBottom () {
51+
this.$nextTick(() => {
52+
this.$refs.messages.scrollTop = this.$refs.messages.scrollHeight
53+
})
4354
}
4455
},
4556
head: {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import io from 'socket.io-client'
2-
const socket = io('http://localhost:3000')
2+
const socket = io(process.env.HOST_URL)
33

44
export default socket

examples/with-sockets/server.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,22 @@ app.use(nuxt.render)
1515
if (config.dev) {
1616
nuxt.build()
1717
.catch((error) => {
18-
console.error(error) // eslint-disable-line no-console
18+
console.error(error) // eslint-disable-line no-console
1919
process.exit(1)
2020
})
2121
}
2222

2323
// Listen the server
2424
server.listen(port, '0.0.0.0')
25-
console.log('Server listening on localhost:' + port)
25+
console.log('Server listening on localhost:' + port) // eslint-disable-line no-console
2626

2727
// Socket.io
2828
let messages = []
2929
io.on('connection', (socket) => {
30-
console.log('New connection');
3130
socket.on('last-messages', function (fn) {
3231
fn(messages.slice(-50))
3332
});
3433
socket.on('send-message', function (message) {
35-
console.log('Message received', message);
3634
messages.push(message)
3735
socket.broadcast.emit('new-message', message)
3836
})

lib/app/router.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Vue.use(Router)
99
function recursiveRoutes(routes, tab, components) {
1010
var res = ''
1111
routes.forEach((route, i) => {
12+
route._name = '_' + hash(route.component)
1213
components.push({ _name: route._name, component: route.component })
1314
res += tab + '{\n'
1415
res += tab + '\tpath: ' + JSON.stringify(route.path) + ',\n'

lib/app/server.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,12 @@ export default context => {
134134
return _app
135135
})
136136
.catch(function (error) {
137-
if (error && error instanceof Error) {
137+
if (error && (error instanceof Error || error.constructor.toString().indexOf('Error()') !== -1)) {
138138
error = { statusCode: 500, message: error.message }
139139
}
140+
else if (typeof error === 'string') {
141+
error = { statusCode: 500, message: error }
142+
}
140143
context.nuxt.error = context.error(error)
141144
<%= (store ? 'context.nuxt.state = store.state' : '') %>
142145
return _app

lib/build/index.js renamed to lib/build.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,10 @@ function * generateRoutesAndFiles () {
205205
return readFile(r(__dirname, 'app', file), 'utf8')
206206
.then((fileContent) => {
207207
const template = _.template(fileContent, {
208-
imports: { serialize }
208+
imports: {
209+
serialize,
210+
hash
211+
}
209212
})
210213
const content = template(templateVars)
211214
return writeFile(r(this.dir, '.nuxt', file), content, 'utf8')
@@ -218,7 +221,7 @@ function createRoutes (files, srcDir) {
218221
let routes = []
219222
files.forEach((file) => {
220223
let keys = file.replace(/^pages/, '').replace(/\.vue$/, '').replace(/\/{2,}/g, '/').split('/').slice(1)
221-
let route = { name: '', path: '', component: r(srcDir, file), _name: null }
224+
let route = { name: '', path: '', component: r(srcDir, file) }
222225
let parent = routes
223226
keys.forEach((key, i) => {
224227
route.name = route.name ? route.name + '-' + key.replace('_', '') : key.replace('_', '')
@@ -240,7 +243,6 @@ function createRoutes (files, srcDir) {
240243
}
241244
}
242245
})
243-
route._name = '_' + hash(route.component)
244246
// Order Routes path
245247
parent.push(route)
246248
parent.sort((a, b) => {

lib/build/webpack/base.config.js renamed to lib/webpack/base.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import vueLoaderConfig from './vue-loader.config'
44
import { defaults } from 'lodash'
55
import { join } from 'path'
6-
import { urlJoin } from '../../utils'
6+
import { urlJoin } from '../utils'
77

88
/*
99
|--------------------------------------------------------------------------
File renamed without changes.

lib/build/webpack/server.config.js renamed to lib/webpack/server.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export default function () {
3939
})
4040

4141
// Externals
42-
const nuxtPackageJson = require('../../../package.json')
42+
const nuxtPackageJson = require('../../package.json')
4343
const projectPackageJsonPath = resolve(this.dir, 'package.json')
4444
config.externals = Object.keys(nuxtPackageJson.dependencies || {})
4545
if (existsSync(projectPackageJsonPath)) {

test/fixtures/with-config/nuxt.config.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
1+
const resolve = require('path').resolve
2+
13
module.exports = {
24
router: {
3-
base: '/test/'
5+
base: '/test/',
6+
extendRoutes (routes) {
7+
routes.push({
8+
name: 'about-bis',
9+
path: '/about-bis',
10+
component: resolve(__dirname, 'pages/about.vue')
11+
})
12+
}
413
},
514
cache: true,
615
plugins: ['~plugins/test.js'],

test/with-config.test.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ test('/test/env', async t => {
4747
t.true(html.includes('"string": "Nuxt.js"'))
4848
})
4949

50+
test('/test/about-bis (added with extendRoutes)', async t => {
51+
const window = await nuxt.renderAndGetWindow(url('/test/about-bis'))
52+
const html = window.document.body.innerHTML
53+
t.true(html.includes('<h1>Custom layout</h1>'))
54+
t.true(html.includes('<h1>About page</h1>'))
55+
})
56+
5057
// Close server and ask nuxt to stop listening to file changes
5158
test.after('Closing server and nuxt.js', t => {
5259
server.close()

0 commit comments

Comments
 (0)