質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

3460閲覧

typescript import {} の意味、jqueryはどのようにimportされているのか

退会済みユーザー

退会済みユーザー

総合スコア0

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2018/06/13 02:51

https://teratail.com/questions/130729

↑昨日、vue単一ファイルコンポーネントでjqueryが使えず質問しました

原因は

import { $ } from "jquery"

という書き方で、正しくは

import $ from "jquery" か、
import jQuery from "jquery"

と書くべきだったみたいです

しかし、
import { Component, Vue } from 'vue-property-decorator'
このようにimportしている箇所もあります

node_modulesでjquery.jsとvue-property-decorator.jsをみてみました

vue-property-decorator.jsの方では、

たくさんの関数が 'export function "関数名" () {}'といった形で宣言されてました

import { Component, Vue } from 'vue-property-decorator'
はモジュールの中で{}内の特定の関数をimportするみたいな感じでしょうか

jquery.jsは、冒頭部分のみですが、

javascript

1/*! 2 * jQuery JavaScript Library v3.3.1 3 * https://jquery.com/ 4 * 5 * Includes Sizzle.js 6 * https://sizzlejs.com/ 7 * 8 * Copyright JS Foundation and other contributors 9 * Released under the MIT license 10 * https://jquery.org/license 11 * 12 * Date: 2018-01-20T17:24Z 13 */ 14( function( global, factory ) { 15 16 "use strict"; 17 18 if ( typeof module === "object" && typeof module.exports === "object" ) { 19 20 // For CommonJS and CommonJS-like environments where a proper `window` 21 // is present, execute the factory and get jQuery. 22 // For environments that do not have a `window` with a `document` 23 // (such as Node.js), expose a factory as module.exports. 24 // This accentuates the need for the creation of a real `window`. 25 // e.g. var jQuery = require("jquery")(window); 26 // See ticket #14549 for more info. 27 module.exports = global.document ? 28 factory( global, true ) : 29 function( w ) { 30 if ( !w.document ) { 31 throw new Error( "jQuery requires a window with a document" ); 32 } 33 return factory( w ); 34 }; 35 } else { 36 factory( global ); 37 } 38 39...............

このようになってました

jqueryはどういった仕組みでimportされているのでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

このjQueryのエクスポート法は、CommonJSと呼ばれるやり方で、jQueryオブジェクト全体をmodule.exportsに代入することで出力しています。

多くのES6環境では、CommonJSのインポートにも対応していますが、

  • import name from 'library'module.exportsに代入されたもの全体をnameに代入する
  • import {name} from 'library'module.exports.namenameとして取り出す

ような挙動になります。


なお、jQueryとVue.jsの併用は、特にjQueryでDOM操作をする場合についてはあまり適当でありません。逆に、「DOM操作以外しか使わない」のであれば、jQueryは大きすぎますので、別なライブラリを使うことを考えたほうがいいでしょう。

投稿2018/06/13 03:03

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/06/15 02:50 編集

回答ありがとうございます なるほどです 前者はimportする対象が唯一のもので、それを name という変数に格納する形で、 後者は、importする対象を特定し、as name などで特定の変数名に格納することなどもできるけど、as name をしない場合は、元々の名前で自動的に扱えるといった感じでしょうか 後者の考え方に沿って import $ from 'jquery' ではなくて import 'jquery' とだけ書いて、jquery() という風に使えるのかなと思ったのですが、こっちは自動的にその名前で扱える訳ではないのですね... vueとの併用について そうですね、データバインディングが崩れる可能性があるからでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問