প্রতিক্রিয়া / জেএসএক্স-এ স্ক্রিপ্ট ট্যাগ যুক্ত করা হচ্ছে


264

আমার একটি প্রতিক্রিয়া উপাদানটিতে ইনলাইন স্ক্রিপ্টিং যুক্ত করার চেষ্টা করার তুলনামূলকভাবে সরল ইস্যু রয়েছে। আমার এখন পর্যন্ত যা আছে:

'use strict';

import '../../styles/pages/people.scss';

import React, { Component } from 'react';
import DocumentTitle from 'react-document-title';

import { prefix } from '../../core/util';

export default class extends Component {
    render() {
        return (
            <DocumentTitle title="People">
                <article className={[prefix('people'), prefix('people', 'index')].join(' ')}>
                    <h1 className="tk-brandon-grotesque">People</h1>

                    <script src="https://use.typekit.net/foobar.js"></script>
                    <script dangerouslySetInnerHTML={{__html: 'try{Typekit.load({ async: true });}catch(e){}'}}></script>
                </article>
            </DocumentTitle>
        );
    }
};

আমি চেষ্টাও করেছি:

<script src="https://use.typekit.net/foobar.js"></script>
<script>try{Typekit.load({ async: true });}catch(e){}</script>

উভয়ই পন্থা পছন্দসই স্ক্রিপ্টটি কার্যকর করে বলে মনে হচ্ছে না। আমি অনুমান করছি এটি একটি সাধারণ জিনিস যা আমি মিস করছি। কেউ সাহায্য করতে পারেন?

পিএস: ফুবার উপেক্ষা করুন, আমার আসল আইডি আসলে ব্যবহারে আছে যা আমি ভাগ করে নেওয়ার মতো মনে করি না।


5
এটি আপনার বেস পৃষ্ঠায় এইচটিএমএল যুক্ত করার পরিবর্তে প্রতিক্রিয়ার মাধ্যমে লোড করার জন্য কোনও নির্দিষ্ট প্রেরণা রয়েছে? এমনকি যদি এটি কাজ করে তবে এর অর্থ হ'ল আপনি যখন উপাদানটি মাউন্ট করেছেন ততবার আপনি কোনও স্ক্রিপ্ট পুনরায় সন্নিবেশ করানো হবে।
লগানফস্মিথ

এটাই কি? আমি ধরে নিয়েছিলাম যে ডিওএম-এর ভিন্নতা বিষয়টি তৈরি করবে না, তবে আমি স্বীকার করি এটি বাস্তবায়নের উপর নির্ভর করবে DocumentTitle
লগানফস্মিথ

8
সঠিক @ লাগানফস্মিথ, প্রতিক্রিয়া যদি পরবর্তী রাষ্ট্রের কাছেও স্ক্রিপ্ট থাকে তবে পুনরায় রেন্ডারে স্ক্রিপ্টটি পুনরায় লোড করবে না।
সর্বাধিক

উত্তর:


403

সম্পাদনা করুন: জিনিসগুলি দ্রুত পরিবর্তিত হয় এবং এটি পুরানো - আপডেট দেখুন


আপনি কি বার বার এই স্ক্রিনটি রেন্ডার করে স্ক্রিপ্টটি আনতে এবং চালিত করতে চান, বা এই উপাদানটি ডিওমে মাউন্ট করা মাত্র একবার?

সম্ভবত এরকম কিছু চেষ্টা করুন:

componentDidMount () {
    const script = document.createElement("script");

    script.src = "https://use.typekit.net/foobar.js";
    script.async = true;

    document.body.appendChild(script);
}

তবে, আপনি কেবল যে স্ক্রিপ্টটি লোড করতে চান তা মডিউল / প্যাকেজ হিসাবে উপলব্ধ না হলে এটি কেবলমাত্র সহায়ক। প্রথমত, আমি সর্বদা:

  • এনপিএম- এ প্যাকেজটি সন্ধান করুন
  • আমার প্রকল্পে প্যাকেজটি ডাউনলোড এবং ইনস্টল করুন ( npm install typekit)
  • importপ্যাকেজ যেখানে আমার এটি প্রয়োজন ( import Typekit from 'typekit';)

এটি সম্ভবত আপনি কীভাবে প্যাকেজগুলি ইনস্টল করেছেন reactএবং react-document-titleআপনার উদাহরণ থেকে, এবং সেখানে এনএমপি তে টাইপকিট প্যাকেজ উপলব্ধ


হালনাগাদ:

এখন যেহেতু আমাদের কাছে হুক রয়েছে, এর useEffectমতো ব্যবহারের জন্য আরও ভাল পদ্ধতির উপায় হতে পারে :

useEffect(() => {
  const script = document.createElement('script');

  script.src = "https://use.typekit.net/foobar.js";
  script.async = true;

  document.body.appendChild(script);

  return () => {
    document.body.removeChild(script);
  }
}, []);

যা এটি কাস্টম হুকের (যেমন hooks/useScript.js:) জন্য দুর্দান্ত প্রার্থী করে :

import { useEffect } from 'react';

const useScript = url => {
  useEffect(() => {
    const script = document.createElement('script');

    script.src = url;
    script.async = true;

    document.body.appendChild(script);

    return () => {
      document.body.removeChild(script);
    }
  }, [url]);
};

export default useScript;

যা এর মতো ব্যবহার করা যেতে পারে:

import useScript from 'hooks/useScript';

const MyComponent = props => {
  useScript('https://use.typekit.net/foobar.js');

  // rest of your component
}

ধন্যবাদ. আমি এই ভুল সম্পর্কে চিন্তা ছিল। এই বাস্তবায়ন নিয়ে আমি এগিয়ে গেলাম। স্রেফ try{Typekit.load({ async: true });}catch(e){}appendChild
অ্যারেইকনাইট

2
আমি স্থির করেছিলাম যে টাইপকিট থেকে "উন্নত" বাস্তবায়ন এই পদ্ধতির জন্য আরও উপযুক্ত।
এরিয়াইটনাইট

10
এটি স্ক্রিপ্ট লোড করার জন্য কাজ করে - তবে আমি কীভাবে স্ক্রিপ্টের কোডটিতে অ্যাক্সেস পেতে পারি। উদাহরণস্বরূপ, আমি একটি ফাংশন কল করতে চাই যা স্ক্রিপ্টের অভ্যন্তরে থাকে তবে আমি স্ক্রিপ্টটি লোড হওয়া উপাদানটির ভিতরে এটি চালিত করতে সক্ষম নই।
শূন্য_কুল

2
স্ক্রিপ্টটি পৃষ্ঠাটিতে যুক্ত করা হলে এটি স্বাভাবিক হিসাবে কার্যকর করা হবে। উদাহরণস্বরূপ, আপনি যদি কোনও সিডিএন থেকে jQuery ডাউনলোড করতে এই পদ্ধতিটি ব্যবহার করেন, তবে componentDidMountফাংশনটি স্ক্রিপ্টটি পৃষ্ঠাটিতে ডাউনলোড এবং সংযুক্ত করার পরে আপনার কাছে বিশ্বব্যাপী (যেমন: চালু ) jQueryএবং $অবজেক্টগুলি উপলব্ধ থাকবে window
অ্যালেক্স ম্যাকমিলান

1
প্রমাণীকরণের স্ক্রিপ্টটি ব্যবহার করে আমার অনুরূপ সমস্যা হয়েছিল এবং পরিণত হয়েছিল যে আপনার প্রতিক্রিয়াশীল অ্যাপ.জেএসের উপরে একটি স্তরটিকে মূলের এইচটিএমএল ফাইলে অন্তর্ভুক্ত করা ভাল be যদি কেউ এটি দরকারী মনে করে। যেমন @ লগনফস্মিথ উল্লেখ করেছেন ...
ডিভাস

57

উপরের উত্তরগুলিতে আরও আপনি এটি করতে পারেন:

import React from 'react';

export default class Test extends React.Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    const s = document.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.innerHTML = "document.write('This is output by document.write()!')";
    this.instance.appendChild(s);
  }

  render() {
    return <div ref={el => (this.instance = el)} />;
  }
}

ডিভটি আবদ্ধ thisএবং স্ক্রিপ্ট এতে intoুকিয়ে দেওয়া হয়েছে।

কোডস্যান্ডবক্স.ইও- তে ডেমো পাওয়া যাবে


5
this.instance আমার পক্ষে কাজ করে নি, তবে ডকুমেন্ট.বডি.অ্যাপেন্ডচিল্ড অ্যালেক্স ম্যাকমিলানের উত্তর থেকে করেছিলেন।
কি দুর্দান্ত হবে

6
আপনি সম্ভবত this.instanceআপনার রেন্ডার পদ্ধতির অভ্যন্তরে রেফটিকে আবদ্ধ করেননি । এটি কাজ করে দেখানোর জন্য আমি একটি ডেমো লিঙ্ক যুক্ত করেছি
সিডোনাল্ডসন

1
@ শুভকুশওয়াহ আপনি নিশ্চয়ই সার্ভার সাইড রেন্ডারিং করছেন?
অ্যারেকনাইট

@ অ্যারাইনাথ হ্যাঁ আমি পরে জানতে পেরেছি যে সার্ভারে এই জিনিসগুলির অস্তিত্ব নেই: document, window। তাই আমি global
এনএমপি

s.async = সত্যের প্রয়োজন কী, আমি এর সম্পর্কে কোন রেফারেন্স পাই না, এর উদ্দেশ্যটি জানতে, আপনি এটি ব্যাখ্যা করতে পারেন
sasha রোমানভ

50

আমার প্রিয় উপায়টি হ'ল বিক্রিয়া হ'ল - এটি এমন একটি উপাদান যা ডকুমেন্টের মাথাটিকে এমনভাবে পরিচালনা করতে পারে যা আপনি সম্ভবত ইতিমধ্যে ব্যবহার করেছেন।

যেমন

import React from "react";
import {Helmet} from "react-helmet";

class Application extends React.Component {
  render () {
    return (
        <div className="application">
            <Helmet>
                <script src="https://use.typekit.net/foobar.js"></script>
                <script>try{Typekit.load({ async: true });}catch(e){}</script>
            </Helmet>
            ...
        </div>
    );
  }
};

https://github.com/nfl/react-helmet


5
এটি এখন পর্যন্ত সেরা সমাধান is
পাকশ

4
দুর্ভাগ্যক্রমে, এটি কাজ করছে না ... কোডস্যান্ডবক্স.ইও
এস

2
@ ডারকোইচ, আমি আপনার কোডটি ট্যাগটিতে যুক্ত করে কোডটিতে জিকুয়ারি যুক্ত async="true"করে কাজ করেছিলাম <script>
সোমা এমবাডিউই

@ সোমমাবাদিও কেন এটি নিয়ে কাজ করে async=trueএবং ব্যর্থ হয়?
ওয়েবউইম্যান

3
এটি চেষ্টা করে, আমার জন্য কাজ করে না। আমি রিপ্যাক্ট-হেলমেটটি একমাত্র কারণেই ব্যবহার করার পরামর্শ দেব না কারণ এটি স্ক্রিপ্টে অতিরিক্ত বৈশিষ্ট্যগুলি সংক্রামিত করে যা সরানো যায় না। এটি আসলে নির্দিষ্ট স্ক্রিপ্টগুলি ভেঙে দেয় এবং রক্ষণাবেক্ষণকারীরা এটি বছরের পর বছর স্থির করেনি, এবং প্রত্যাখ্যান করে ফেলেছে github.com/nfl/react-helmet/issues/79
ফিলিবার্গ

16

আপনার যদি <script>এসএসআরতে ব্লক (সার্ভার-সাইড রেন্ডারিং) দরকার হয় তবে এর সাথে একটি পদ্ধতির componentDidMountকাজ হবে না।

react-safeপরিবর্তে আপনি লাইব্রেরি ব্যবহার করতে পারেন । প্রতিক্রিয়া কোডটি হবে:

import Safe from "react-safe"

// in render 
<Safe.script src="https://use.typekit.net/foobar.js"></Safe.script>
<Safe.script>{
  `try{Typekit.load({ async: true });}catch(e){}`
}
</Safe.script>

12

উত্তর অ্যালেক্স ম্যাকমিলান দিয়েছিল তা আমাকে সবচেয়ে বেশি সহায়তা করেছে তবে আরও জটিল স্ক্রিপ্ট ট্যাগের জন্য বেশ কার্যকর হয়নি।

আমি ইতিমধ্যে "এসসিআর" সেট করে যাচ্ছিল বিভিন্ন ফাংশনগুলির সাথে একটি দীর্ঘ ট্যাগের জন্য একটি সমাধান নিয়ে আসার জন্য আমি তার উত্তরটি সামান্য সামান্য প্রচার করি।

(আমার ব্যবহারের ক্ষেত্রে স্ক্রিপ্টটি মাথায় থাকার দরকার যা এখানেও প্রতিফলিত হয়েছে):

  componentWillMount () {
      const script = document.createElement("script");

      const scriptText = document.createTextNode("complex script with functions i.e. everything that would go inside the script tags");

      script.appendChild(scriptText);
      document.head.appendChild(script);
  }

7
আমি বুঝতে পারছি না যে আপনি যদি কেবল পৃষ্ঠাটিতে ইনলাইন জেএস ডাম্প করছেন তবে আপনি কেন প্রতিক্রিয়া ব্যবহার করবেন ...?
অ্যালেক্স ম্যাকমিলান

2
আপনাকে document.head.removeChild(script);আপনার কোড যুক্ত করতে হবে, অথবা ব্যবহারকারী এই পৃষ্ঠার পথটি যতক্ষণ পরিদর্শন করবেন ততক্ষণ আপনি
এইচটিএমটিএলে

7

আমি এই নির্দিষ্ট ক্ষেত্রেটির জন্য একটি প্রতিক্রিয়া উপাদান তৈরি করেছি: https://github.com/coreyleelayson/react-typekit

একটি প্রপ হিসাবে কেবল আপনার টাইপকিট কিট আইডি পাস করতে হবে এবং আপনি যেতে ভাল।

import React from 'react';
import Typekit from 'react-typekit';

const HtmlLayout = () => (
  <html>
    <body>
      <h1>My Example React Component</h1>
      <Typekit kitId="abc123" />
    </body>
  </html>
);

export default HtmlLayout;

3

ব্যবহার করে খুব সুন্দর কাজ আছে Range.createContextualFragment

/**
 * Like React's dangerouslySetInnerHTML, but also with JS evaluation.
 * Usage:
 *   <div ref={setDangerousHtml.bind(null, html)}/>
 */
function setDangerousHtml(html, el) {
    if(el === null) return;
    const range = document.createRange();
    range.selectNodeContents(el);
    range.deleteContents();
    el.appendChild(range.createContextualFragment(html));
}

এটি স্বেচ্ছাসেবী এইচটিএমএল এর জন্য কাজ করে এবং প্রসঙ্গে তথ্য যেমন ধরে রাখে document.currentScript


আপনি কীভাবে সহযোগিতা করতে পারেন এটি ব্যবহারের নমুনা সহ দয়া করে কীভাবে কাজ করবেন? আমার জন্য এটি উদাহরণস্বরূপ স্ক্রিপ্ট এবং শরীরের পাশ দিয়ে কাজ করছে না ..
অ্যালেক্স এফিমভ

3

আপনি npm postscribeপ্রতিক্রিয়া উপাদানটিতে স্ক্রিপ্ট লোড করতে ব্যবহার করতে পারেন

postscribe('#mydiv', '<script src="https://use.typekit.net/foobar.js"></script>')

1
আমার সমস্যার সমাধান করে
RPichioli

1

আপনি প্রতিক্রিয়া হেলমেটও ব্যবহার করতে পারেন

import React from "react";
import {Helmet} from "react-helmet";

class Application extends React.Component {
  render () {
    return (
        <div className="application">
            <Helmet>
                <meta charSet="utf-8" />
                <title>My Title</title>
                <link rel="canonical" href="http://example.com/example" />
                <script src="/path/to/resource.js" type="text/javascript" />
            </Helmet>
            ...
        </div>
    );
  }
};

হেলমেট সরল এইচটিএমএল ট্যাগ নেয় এবং সরল এইচটিএমএল ট্যাগগুলি আউটপুট দেয়। এটি মরিয়া সহজ, এবং প্রতিক্রিয়া সূচনা বন্ধুত্বপূর্ণ।


0

একাধিক স্ক্রিপ্টগুলির জন্য, এটি ব্যবহার করুন

var loadScript = function(src) {
  var tag = document.createElement('script');
  tag.async = false;
  tag.src = src;
  document.getElementsByTagName('body').appendChild(tag);
}
loadScript('//cdnjs.com/some/library.js')
loadScript('//cdnjs.com/some/other/library.js')

0
componentDidMount() {
  const head = document.querySelector("head");
  const script = document.createElement("script");
  script.setAttribute(
    "src",
    "https://assets.calendly.com/assets/external/widget.js"
  );
  head.appendChild(script);
}

0

আপনি নীচের লিঙ্কে সেরা উত্তর খুঁজে পেতে পারেন:

https://cleverbeagle.com/blog/articles/tutorial-how-to-load-third-party-scripts-dynamically-in-javascript

const loadDynamicScript = (callback) => {
const existingScript = document.getElementById('scriptId');

if (!existingScript) {
    const script = document.createElement('script');
    script.src = 'url'; // URL for the third-party library being loaded.
    script.id = 'libraryName'; // e.g., googleMaps or stripe
    document.body.appendChild(script);

    script.onload = () => {
      if (callback) callback();
    };
  }

  if (existingScript && callback) callback();
};

0

অ্যালেক্স ম্যাকমিলানের সমাধান অনুসারে আমার নীচের রূপান্তরটি আছে।
আমার নিজস্ব পরিবেশ: 16.8+ প্রতিক্রিয়া করুন, পরবর্তী v9 +

// স্ক্রিপ্ট
// হুক্স / স্ক্রিপ্ট.জেএস নামে একটি কাস্টম উপাদান যুক্ত করুন

import { useEffect } from 'react'

const useScript = (url, async) => {
  useEffect(() => {
    const script = document.createElement('script')

    script.src = url
    script.async = (typeof async === 'undefined' ? true : async )

    document.body.appendChild(script)

    return () => {
      document.body.removeChild(script)
    }
  }, [url])
}

export default function Script({ src, async=true}) {

  useScript(src, async)

  return null  // Return null is necessary for the moment.
}

// কাস্টম সংমিশ্রণটি ব্যবহার করুন, কেবল এটি আমদানি করুন এবং <script>কাস্টম উটের কেস <Script>ট্যাগ সহ পুরানো লোয়ার কেস ট্যাগের বিকল্প দিন ।
// index.js

import Script from "../hooks/Script";

<Fragment>
  {/* Google Map */}
  <div ref={el => this.el = el} className="gmap"></div>

  {/* Old html script */}
  {/*<script type="text/javascript" src="http://maps.google.com/maps/api/js"></script>*/}

  {/* new custom Script component */}
  <Script src='http://maps.google.com/maps/api/js' async={false} />
</Fragment>

এই উপাদানটির জন্য একটি সতর্কতা রয়েছে: এই স্ক্রিপ্ট উপাদানটি কেবল তার নিজের ভাইবোনদের ক্রমানুসারে গ্যারান্টি দিতে পারে। আপনি যদি একই পৃষ্ঠার একাধিক উপাদানগুলিতে এই উপাদানটি একাধিকবার ব্যবহার করেন তবে স্ক্রিপ্টগুলি ব্লকগুলি বিন্যস্ত হতে পারে। কারণটি হ'ল সমস্ত স্ক্রিপ্টগুলি ডকুমেন্টেশন.ভয়ে ডকুমেন্ট.বডি.অপেন্ডচিল্ড প্রোগ্রামযুক্তভাবে সন্নিবেশ করানো হয়েছে। হেলমেট সমস্ত স্ক্রিপ্ট ট্যাগকে হেড ট্যাগে সরান, যা আমরা চাই না।
সুলি

আরে @ সুলি, আমার সমস্যাটি এখানে স্ক্রিপ্টটি ডিওমে একাধিকভাবে যুক্ত করা হচ্ছে, আমি এখন অবধি সবচেয়ে ভাল সমাধানটি কম্পোনেন্ট আনমাউন্টিংয়ের সময়, ডিওএম থেকে শিশু উপাদানটিকে (অর্থাত্ <স্ক্রিপ্ট>) সরিয়ে দিচ্ছি এবং তারপরে এটি হচ্ছে উপাদানটি যখন ডিওএম এ মাউন্ট করা হয় তখন আবার যুক্ত করা হয় (আমি রিঅ্যাক্ট-রাউটার-ডোম ব্যবহার করি এবং কেবলমাত্র একটি উপাদানকে আমার সমস্ত উপাদানগুলির এই স্ক্রিপ্টের প্রয়োজন হয়)
Eazy

0

পার্টিতে কিছুটা দেরি হলেও আমি @ অ্যালেক্স ম্যাকমিলান উত্তরগুলি দেখে নিজের একটি তৈরি করার সিদ্ধান্ত নিয়েছি এবং এটি ছিল দুটি অতিরিক্ত পরামিতি পেরিয়ে; যে অবস্থানটিতে স্ক্রিপ্টগুলি স্থাপন করা যায় বা async সত্য / মিথ্যাতে সেট করা যায়, তা এখানে:

import { useEffect } from 'react';

const useScript = (url, position, async) => {
  useEffect(() => {
    const placement = document.querySelector(position);
    const script = document.createElement('script');

    script.src = url;
    script.async = typeof async === 'undefined' ? true : async;

    placement.appendChild(script);

    return () => {
      placement.removeChild(script);
    };
  }, [url]);
};

export default useScript;

এটিকে কল করার উপায়টি হ'ল এই পোস্টের গৃহীত উত্তরে দেখানো ঠিক একই তবে দুটি অতিরিক্ত (আবার) পরামিতি সহ:

// First string is your URL
// Second string can be head or body
// Third parameter is true or false.
useScript("string", "string", bool);

-3

সমাধান দৃশ্যের উপর নির্ভর করে। আমার ক্ষেত্রে যেমন, আমি একটি প্রতিক্রিয়া উপাদান ভিতরে একটি ক্যালেন্ডার এম্বেড লোড করতে হয়েছিল।

ক্যালেন্ডারলি একটি ডিভের সন্ধান করে এবং এর data-urlবৈশিষ্ট্য থেকে পাঠ করে এবং বর্ণিত ডিভের ভিতরে একটি আইফ্রেম লোড করে।

আপনি প্রথমে পৃষ্ঠাটি লোড করার পরে এটি সমস্ত ভাল: প্রথম, ডিভের সাথে data-urlরেন্ডার করা হয়। তারপরে ক্যালেন্ডারি স্ক্রিপ্টটি শরীরে যুক্ত করা হয়। ব্রাউজারটি এটি ডাউনলোড করে মূল্যায়ন করে এবং আমরা সকলেই খুশি home

সমস্যাটি তখনই চলে আসে যখন আপনি নেভিগেট করেন এবং তারপরে পৃষ্ঠায় ফিরে আসুন। এবার স্ক্রিপ্টটি এখনও শরীরে রয়েছে এবং ব্রাউজারটি এটি পুনরায় ডাউনলোড করে পুনরায় মূল্যায়ন করে না।

ফিক্স:

  1. উপর componentWillUnmountখুঁজে পেতে এবং স্ক্রিপ্ট উপাদান মুছে ফেলুন। তারপরে পুনরায় মাউন্টে উপরের পদক্ষেপগুলি পুনরাবৃত্তি করুন।
  2. প্রবেশ করুন $.getScript। এটি একটি নিফটি জ্যাকোয়ারি সহায়ক যা একটি স্ক্রিপ্ট ইউআরআই এবং সাফল্য কলব্যাক নেয়। স্ক্রিপ্টটি এটি লোড হয়ে গেলে এটি এটির মূল্যায়ন করে এবং আপনার সাফল্য কলব্যাককে আগুন দেয়। আমার যা করতে হবে তা আমার মধ্যে componentDidMount $.getScript(url)। আমার renderপদ্ধতিতে ইতিমধ্যে ক্যালেন্ডলি ডিভ রয়েছে। এবং এটি মসৃণ কাজ করে।

2
এটি করতে jQuery যুক্ত করা একটি খারাপ ধারণা, এবং আপনার ক্ষেত্রেটি আপনার পক্ষে খুব নির্দিষ্ট। বাস্তবে একবারে ক্যালেন্ডার স্ক্রিপ্ট যুক্ত করার মতো কোনও সমস্যা নেই কারণ আমি নিশ্চিত যে এপিআইয়ের একটি পুনরায় সনাক্তকারী কল রয়েছে। বার বার একটি স্ক্রিপ্ট অপসারণ এবং যুক্ত করা সঠিক নয়।
সিডোনাল্ডসন

@ সিডোনাল্ডসন jQuery একটি খারাপ অভ্যাস নয় যদি আপনি কোনও প্রকল্পের বিভিন্ন কাঠামো (এবং libs) এর আর্কিটেকচার যৌগটি বজায় রাখতে চান তবে কেবল প্রতিক্রিয়া দেখাবে না, অন্যভাবে আকারে পৌঁছানোর জন্য আমাদের দেশীয় জেএস ব্যবহার করতে হবে
অ্যালেক্সনিকনভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.