ค้นหาเว็บไซต์

node.js - Angular ฉันจะสามารถใช้สคริปต์ฝังตัวใน Component ได้อย่างไร


ฉันกำลังพยายามตั้งค่าใน Angular วิธีการแสดงเฉพาะผู้เล่น Twitch หากสตรีมกำลังออนไลน์ ดังนั้นในเอกสารมี HTML แบบ inline แบบนี้:

<script src= "https://player.twitch.tv/js/embed/v1.js"></script>
<div id="<player div ID>"></div>
<script type="text/javascript">
  var options = {
    width: <width>,
    height: <height>,
    channel: "<channel ID>",
    video: "<video ID>",
    collection: "<collection ID>",
  };
  var player = new Twitch.Player("<player div ID>", options);
  player.setVolume(0.5);
</script>

แน่นอนว่าใน Angular Components เราไม่สามารถใช้แท็ก <script> ได้ และฉันก็ไม่คิดว่าตอนนี้จะสามารถใช้ require หรือ import เพื่อนำสิ่งนี้มาใช้ใน TypeScript ของ component ของฉันได้

แล้วฉันจะไปเพิ่มฟังก์ชันนี้ได้อย่างไร? ฉันเข้าใจว่าต้องทำอะไรหลังจากที่สามารถอ้างอิงแท็กสคริปต์นั้นได้จริง ๆ

คำตอบ #1

คุณสามารถสร้างแท็กสคริปต์แบบไดนามิกได้ แต่ฉันคิดว่าง่ายกว่าถ้าจะดาวน์โหลดสคริปต์มาแล้วใส่ในโฟลเดอร์ assets จากนั้นเพิ่มสคริปต์ไปที่รายการสคริปต์ใน angular.json

หรืคุณสามารถเพิ่มสคริปต์ไปที่ส่วนหัวของ index.html

index.html

<head>
    <script src= "https://player.twitch.tv/js/embed/v1.js"></script>
    ...
</head>

เพิ่มสิ่งนี้ไปยังเมธอด ngOninit ของคอมโพเนนต์

      ngOnInit() {
        var options = {
            width: <width>,
            height: <height>,
            channel: "<channel ID>",
            video: "<video ID>",
            collection: "<collection ID>",
          };
          var player = new Twitch.Player("<player div ID>", options);
          player.setVolume(0.5);
       }

แม่แบบส่วนประกอบ

    <div id="<player div ID>"></div>

คุณอาจพบวิธีแก้ปัญหาอื่นเช่นแพ็กเกจ Angular สำหรับ Twitch ซึ่งอาจเป็นวิธีที่สะอาดกว่า

อัปเดตแล้ว

TypeScript จะแสดงข้อผิดพลาดเหมือน [ts] Cannot find name 'Twitch'. [2304] บางไลบรารีมีไฟล์กำหนดประเภท แต่ในกรณีของเราถ้าคุณใช้วัตถุ Twitch ในไฟล์นี้เพียงอย่างเดียว คุณสามารถเพิ่มคำสั่งนี้เพื่อบอก TypeScript เกี่ยวกับวัตถุ Twitch

declare const Twitch: any;

ถ้าคุณต้องการใช้ Twitch บนอุปกรณ์หลายชิ้น

src/global.d.ts

 declare const Twitch: any;

คำแนะนำสุดท้าย

ติดตั้ง npm i twitch-js และนำเข้าอ็อบเจ็กต์ Twitch แบบนี้

import Twitch from 'twitch-js'

สิ่งนี้จะถูกรวมโดย webpack ดังนั้นคุณจึงไม่จำเป็นต้องเพิ่มแท็กสคริปต์ใดๆ ใน HTML

นักพัฒนาของทวิตช์

คำตอบ #2

ดิฉันต่อสู้กับเรื่องนี้มาซักพัก สคริปต์ของฉันเป็นแบบอะซิงโครนัส และในที่สุดฉันก็พบแพ็กเกจ postscribe ทำงานเหมือนเวทมนตร์

npm install --save postscribe

ในโค้ด:

import postscribe from 'postscribe'

//The script you want to load
const script = '<script src="https://darksky.net/map-embed/@radar,41.88,-87.62,10.js?embed=true&timeControl=false&fieldControl=false&defaultField=radar"></script>';

postscribe('#yourDivName', script);

บทความที่เกี่ยวข้อง