mirror of
https://github.com/nuxt/nuxt.git
synced 2025-01-30 15:22:39 +00:00
Merge remote-tracking branch 'nuxt/master'
This commit is contained in:
commit
634ff204b6
@ -1,5 +1,14 @@
|
||||
module.exports = {
|
||||
build: {
|
||||
vendor: ['socket.io-client']
|
||||
},
|
||||
head: {
|
||||
meta: [
|
||||
{ charset: 'utf-8' },
|
||||
{ name: 'viewport', content: 'width=device-width, initial-scale=1' }
|
||||
]
|
||||
},
|
||||
env: {
|
||||
HOST_URL: process.env.HOST_URL || 'http://localhost:3000'
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
<ul class="pages">
|
||||
<li class="chat page">
|
||||
<div class="chatArea">
|
||||
<ul class="messages">
|
||||
<ul class="messages" ref="messages">
|
||||
<li class="message" v-for="message in messages"><i :title="message.date">{{ message.date.split('T')[1].slice(0, -2) }}</i>: {{ message.text }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -25,11 +25,17 @@ export default {
|
||||
})
|
||||
})
|
||||
},
|
||||
watch: {
|
||||
'messages': 'scrollToBottom'
|
||||
},
|
||||
beforeMount () {
|
||||
socket.on('new-message', (message) => {
|
||||
this.messages.push(message)
|
||||
})
|
||||
},
|
||||
mounted () {
|
||||
this.scrollToBottom()
|
||||
},
|
||||
methods: {
|
||||
sendMessage () {
|
||||
if (!this.message.trim()) return
|
||||
@ -40,6 +46,11 @@ export default {
|
||||
this.messages.push(message)
|
||||
this.message = ''
|
||||
socket.emit('send-message', message)
|
||||
},
|
||||
scrollToBottom () {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.messages.scrollTop = this.$refs.messages.scrollHeight
|
||||
})
|
||||
}
|
||||
},
|
||||
head: {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import io from 'socket.io-client'
|
||||
const socket = io('http://localhost:3000')
|
||||
const socket = io(process.env.HOST_URL)
|
||||
|
||||
export default socket
|
||||
|
@ -15,24 +15,22 @@ app.use(nuxt.render)
|
||||
if (config.dev) {
|
||||
nuxt.build()
|
||||
.catch((error) => {
|
||||
console.error(error) // eslint-disable-line no-console
|
||||
console.error(error) // eslint-disable-line no-console
|
||||
process.exit(1)
|
||||
})
|
||||
}
|
||||
|
||||
// Listen the server
|
||||
server.listen(port, '0.0.0.0')
|
||||
console.log('Server listening on localhost:' + port)
|
||||
console.log('Server listening on localhost:' + port) // eslint-disable-line no-console
|
||||
|
||||
// Socket.io
|
||||
let messages = []
|
||||
io.on('connection', (socket) => {
|
||||
console.log('New connection');
|
||||
socket.on('last-messages', function (fn) {
|
||||
fn(messages.slice(-50))
|
||||
});
|
||||
socket.on('send-message', function (message) {
|
||||
console.log('Message received', message);
|
||||
messages.push(message)
|
||||
socket.broadcast.emit('new-message', message)
|
||||
})
|
||||
|
@ -9,6 +9,7 @@ Vue.use(Router)
|
||||
function recursiveRoutes(routes, tab, components) {
|
||||
var res = ''
|
||||
routes.forEach((route, i) => {
|
||||
route._name = '_' + hash(route.component)
|
||||
components.push({ _name: route._name, component: route.component })
|
||||
res += tab + '{\n'
|
||||
res += tab + '\tpath: ' + JSON.stringify(route.path) + ',\n'
|
||||
|
@ -134,9 +134,12 @@ export default context => {
|
||||
return _app
|
||||
})
|
||||
.catch(function (error) {
|
||||
if (error && error instanceof Error) {
|
||||
if (error && (error instanceof Error || error.constructor.toString().indexOf('Error()') !== -1)) {
|
||||
error = { statusCode: 500, message: error.message }
|
||||
}
|
||||
else if (typeof error === 'string') {
|
||||
error = { statusCode: 500, message: error }
|
||||
}
|
||||
context.nuxt.error = context.error(error)
|
||||
<%= (store ? 'context.nuxt.state = store.state' : '') %>
|
||||
return _app
|
||||
|
@ -205,7 +205,10 @@ function * generateRoutesAndFiles () {
|
||||
return readFile(r(__dirname, 'app', file), 'utf8')
|
||||
.then((fileContent) => {
|
||||
const template = _.template(fileContent, {
|
||||
imports: { serialize }
|
||||
imports: {
|
||||
serialize,
|
||||
hash
|
||||
}
|
||||
})
|
||||
const content = template(templateVars)
|
||||
return writeFile(r(this.dir, '.nuxt', file), content, 'utf8')
|
||||
@ -218,7 +221,7 @@ function createRoutes (files, srcDir) {
|
||||
let routes = []
|
||||
files.forEach((file) => {
|
||||
let keys = file.replace(/^pages/, '').replace(/\.vue$/, '').replace(/\/{2,}/g, '/').split('/').slice(1)
|
||||
let route = { name: '', path: '', component: r(srcDir, file), _name: null }
|
||||
let route = { name: '', path: '', component: r(srcDir, file) }
|
||||
let parent = routes
|
||||
keys.forEach((key, i) => {
|
||||
route.name = route.name ? route.name + '-' + key.replace('_', '') : key.replace('_', '')
|
||||
@ -240,7 +243,6 @@ function createRoutes (files, srcDir) {
|
||||
}
|
||||
}
|
||||
})
|
||||
route._name = '_' + hash(route.component)
|
||||
// Order Routes path
|
||||
parent.push(route)
|
||||
parent.sort((a, b) => {
|
@ -3,7 +3,7 @@
|
||||
import vueLoaderConfig from './vue-loader.config'
|
||||
import { defaults } from 'lodash'
|
||||
import { join } from 'path'
|
||||
import { urlJoin } from '../../utils'
|
||||
import { urlJoin } from '../utils'
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
@ -39,7 +39,7 @@ export default function () {
|
||||
})
|
||||
|
||||
// Externals
|
||||
const nuxtPackageJson = require('../../../package.json')
|
||||
const nuxtPackageJson = require('../../package.json')
|
||||
const projectPackageJsonPath = resolve(this.dir, 'package.json')
|
||||
config.externals = Object.keys(nuxtPackageJson.dependencies || {})
|
||||
if (existsSync(projectPackageJsonPath)) {
|
11
test/fixtures/with-config/nuxt.config.js
vendored
11
test/fixtures/with-config/nuxt.config.js
vendored
@ -1,6 +1,15 @@
|
||||
const resolve = require('path').resolve
|
||||
|
||||
module.exports = {
|
||||
router: {
|
||||
base: '/test/'
|
||||
base: '/test/',
|
||||
extendRoutes (routes) {
|
||||
routes.push({
|
||||
name: 'about-bis',
|
||||
path: '/about-bis',
|
||||
component: resolve(__dirname, 'pages/about.vue')
|
||||
})
|
||||
}
|
||||
},
|
||||
cache: true,
|
||||
plugins: ['~plugins/test.js'],
|
||||
|
@ -47,6 +47,13 @@ test('/test/env', async t => {
|
||||
t.true(html.includes('"string": "Nuxt.js"'))
|
||||
})
|
||||
|
||||
test('/test/about-bis (added with extendRoutes)', async t => {
|
||||
const window = await nuxt.renderAndGetWindow(url('/test/about-bis'))
|
||||
const html = window.document.body.innerHTML
|
||||
t.true(html.includes('<h1>Custom layout</h1>'))
|
||||
t.true(html.includes('<h1>About page</h1>'))
|
||||
})
|
||||
|
||||
// Close server and ask nuxt to stop listening to file changes
|
||||
test.after('Closing server and nuxt.js', t => {
|
||||
server.close()
|
||||
|
Loading…
Reference in New Issue
Block a user