vue-在vue中引用index.html中定义的var全局变量

本文讲述了在Vue项目中遇到的returnCitySN未定义问题,通过理解window对象和Vue全局变量的区别,作者介绍了如何在main.js中将window的returnCitySN变量注入Vue实例,以便在其他组件中使用。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

最近在vue项目使用http://pv.sohu.com/cityjson?ie=utf-8接口获取客户端用户的ip及地区,出现returnCitySN未定义的错误,经过分析returnCitySN属于window的一个属性变量,而不是Vue中的一个属性变量,而在vue中如果要使用全局变量,需要在main.js中赋予变量给Vue,所有想到的解决办法在main.js中将window的returnCitySN变量赋值给Vue,如:

  • index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>demo</title>
    <% if (htmlWebpackPlugin.options.nodeModules) { %>
      <!-- Add `node_modules/` to global paths so `require` works properly in development -->
      <script>
        require('module').globalPaths.push('<%= htmlWebpackPlugin.options.nodeModules.replace(/\\/g, '\\\\') %>')
      </script>
    <% } %>
	<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
  </head>
  <body>
    <div id="app"></div>
    <!-- Set `__static` path to static files in production -->
    <% if (!process.browser) { %>
      <script>
        if (process.env.NODE_ENV !== 'development') window.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
      </script>
    <% } %>

    <!-- webpack builds are automatically injected -->
  </body>
  <style>
	body{
	  margin: 0 0;
	  overflow-y: hidden;
	  overflow-x: hidden;
	}
  </style>
</html>
  • main.js
import Vue from 'vue'
import axios from 'axios'
Vue.prototype.$returnCitySN = window.returnCitySN;
new Vue({
  i18n,
  components: { App },
  router,
  store,
  template: '<App/>'
}).$mount('#app')

总结

Vue就是全局对象,想在其他vue文件中使用变量,只需要设置成Vue中的一个属性变量,通过this对象(vue)获取设置的属性即可。

Vue项目vue.config.js文件是Webpack构建工具的配置文件。我们可以在该文件进行一些列配置,比如设置代理、修改webpack配置等等。而传递变量给项目全局使用也是vue.config.js文件的一个重要功能。 将变量传递给项目全局使用,可以使用Vue的内置变量API——process.env。在vue.config.js文件,我们可以对process.env进行修改,从而实现变量的传递。例如,在vue.config.js文件添加以下代码: ```javascript process.env.VUE_APP_BASE_URL = "/api/"; ``` 这个代码的作用是将字符串“/api/”赋值给VUE_APP_BASE_URL变量。VUE_APP_BASE_URL是Vue提供的内置变量,它可以在项目全局使用。在组件可直接通过this.$env.VUE_APP_BASE_URL来获取该变量的值。 除了Vue提供的内置变量以外,我们还可以通过webpack的DefinePlugin插件来传递变量。可以在vue.config.js文件的configureWebpack字段加上以下配置,实现传递一个名为VAR_NAME的变量。 ```javascript const webpack = require('webpack') module.exports = { configureWebpack: { plugins: [ new webpack.DefinePlugin({ "VAR_NAME": JSON.stringify("var_value") }) ] } } ``` 在项目,我们可以通过VAR_NAME来获取该变量的值。 总之,在vue.config.js文件传递变量给项目全局使用,是一件非常简单的事情。我们可以通过Vue内置变量API或者webpack的DefinePlugin插件,实现变量的传递。这样可以方便我们在项目再任何地方使用该变量,避免了重复定义变量的麻烦。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值