Vue.jsはwebページを部品化してコーディングすることを目的としたJavaScriptのフレームワークです。単一コンポーネントの仕組みを用いたVue.jsのコード例の多くは(少なくとも私の読んだコードでは)次の様になっています。
// コンポーネント定義用Vue.jsコード <template> // Vue.jsと連携するHTMLコード </template> <script> export default { name: 'hoge', // prop:{}とかdeta(){return {hogehoge}}とかmethods:{}とかVue.jsと連携するためのプロパティ }; </script> <style scoped> // このコンポーネント内でのみ適用されるcss </style>
// コンポーネント読み込み用JavaScriptコード window.$ = window.jQuery = require('jquery'); // 色々グローバルで使うライブラリ window.Vue = require('vue'); Vue.component('hoge', require('./hoge.vue').default); const app = new Vue({ el: '#app', });
自分はVue.jsで使うことを前提にしていないライブラリはJavaScript側2、3行目の様に色々読み込むものだと思っていました。一方でこのようなやり方はグローバル汚染がひどく、重要なごく一部のライブラリ以外を読み込んだ場合あっという間にバグが生まれるとも思っていました。実際はそのようなことをせずともよく、次の様に記述することで管理しやすくライブラリを用いることができました。
<template> // Vue.jsと連携するHTMLコード </template> <script> import 'fuga'; import foo from 'foo'; // Vue.jsに依らない静的処理 const bar = foo.bar(); export default { name: 'hoge', // importしたライブラリや変数barを用いたVue.jsと連携するコード }; </script> <style scoped> // このコンポーネント内でのみ適用されるcss </style>
<script>タグの先頭に記述するだけです。<script>タグの内部ならばVue.jsがいい感じにスコープを作ってくれるのでグローバル汚染を気にせず好き勝手できます。
<script>export default {で始めて、}</script>で終わらなければならないという風に思い込んでいましたがVue.jsにその様な縛りはなく、実際はかなり自由に記述できました。