js:http-vue-loader从浏览器直接引入vue文件

发布时间 2023-07-17 10:31:08作者: 7c89

doc

github: https://github.com/FranckFreiburger/http-vue-loader

index.html

<!doctype html>
<html lang="en">
<head>
  <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.14/vue.min.js"></script>
  <script src="https://unpkg.com/http-vue-loader"></script>
</head>
<body>
  <div id="app">
    <my-component></my-component>
  </div>
  <script type="text/javascript">
    new Vue({
      el: '#app',
      components: {
        'my-component': httpVueLoader('my-component.vue')
      }
    });
  </script>
</body>
</html>

my-component.vue

<template>
  <div class="hello">
    Hello {{who}}
  </div>
</template>
<script>
// 不支持 import
module.exports = {
  data: function () {
    return {
      who: 'world',
    };
  },
  components: {},
};
</script>
<style>
.hello {
  background-color: #ffe;
}
</style>

使用 sass

<!-- 可选,使用sass -->
<script src="https://cdn.bootcdn.net/ajax/libs/sass.js/0.9.9/sass.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/sass.js/0.9.9/sass.worker.min.js"></script>
<script type="text/javascript">
// 可选, 使用scss
httpVueLoader.langProcessor.scss = function (scssText) {
  return new Promise(function (resolve, reject) {
    Sass.compile(scssText, function (result) {
      if (result.status === 0)
        resolve(result.text)
      else
        reject(result)
    });
  });
}
</script>

使用 less

<!-- 使用 less -->
<script src="https://cdn.jsdelivr.net/npm/less@4.1.1/dist/less.min.js"></script>
<script type="text/javascript">
httpVueLoader.langProcessor.less = function (lessText) {
  return new Promise(function (resolve, reject) {
    less.render(lessText, {}, function (err, css) {
      if (err) {
        reject(err)
      } else {
        resolve(css.css);
      }
    })
  })
}
</script>