簡體   English   中英

Browserify和Vue:未捕獲的參考錯誤:未定義Vue

[英]Browserify and Vue: uncaught reference error: Vue is not defined

這是我對基本jQuery之外的任何前端開發的首次嘗試,並且我正在將Vue.js以及其他一些帶有Browserify的軟件包一起使用。 我的主要“ app.js”如下所示:

window.$ = window.jQuery = require('jquery');
require('bootstrap');
var moment = require('moment');
var fullCalendar = require('./vendor/fullcalendar.min.js');
var datetimepicker = require('./vendor/bootstrap-datetimepicker.min.js');
var select2 = require('./vendor/select2.min.js');
var VueResource = require('vue-resource');
var Vue = require('vue');
require('./videos/show.js');
require('./home.js');
require('./search.js');

Vue.use(VueResource);

new Vue({
    el: '#search',

    data: {
        message: 'Hello World!'
    },

});

...

它可以按預期方式工作,但是當我嘗試在另一個文件(例如,在search.js中)中創建新的Vue實例時,我無法做到。 我在控制台中收到“未捕獲的參考錯誤:未定義Vue”。 在其他地方使用其他必需的程序包沒有問題-盡管我不明白為什么我需要以我的方式導入jQuery ...如果我這樣做將無法正常工作:

var $, jQuery = require('jquery');

我確信這是我尚不了解的非常基本的內容,但是任何幫助將不勝感激!

您遇到的問題是使用模塊的基礎。 通常,模塊應始終導出某些行為或屬性,然后您需要該模塊並使用它。 例如,假設我想在某些頁面的表單中添加隱藏內容。 我會這樣做:

AddSecretToken.js

module.exports = function(form) {
  // code here to add the hidden input to the passed in form
}

然后在其他地方,我有一個需要秘密輸入的表格,我會要求它:

MyForm.js

var addSecretToken = require('./AddSecretToken');

...
// some code that makes a form
addSecretToken(myForm);
...

顯然,在某些時候,您需要一些可以實際運行某些代碼的代碼,但這將是您的根模塊或需要該根模塊的頁面。 因此,也許您在頂部有一個app.js ,它需要它所需要的,然后運行app()而不導出任何內容。 那講得通。 但是大多數模塊都不應該這樣做。

每當您需要某種行為時,都應該創建一個模塊,然后在需要該行為的任何地方都需要該模塊。 每個模塊都應該要求它依賴什么-它不應該依賴任何全局變量(有時jQuery是一個例外)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM