Şimdi Ara

NodeJS Kullanımı

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
14
Cevap
0
Favori
948
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar. Bir nodeJS kodunu komut penceresinden;

    node deneme.js ile çalıştırabiliyoruz. Örneğin;

    use strict";  
    var fs = require("fs");
    fs.readdir("deneme", function (ex, files)
    {
    if (ex) {
    console.log(ex);
    } else {
    console.log(files);
    }
    })
    ;


    kodu ile bir klasördeki dosyaların isimlerini listeliyor.

    Benim sorum, bu js dosyasını html dosyası içinden nasıl çalıştıracağız? Yani deneme.html yazınca tarayıcıda klasördeki dosya isimleri görünsün istiyorum.

    O isimleri elde ettiğim zaman <img src ile resimleri görüntüleyeceğim. Amacım bu.



  • Yok mu bir cevap?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Öncelikle node.js içerisinde Http Server oluşturman gerekiyor. Diyelim ki oluşturduğun bu server da 99 nolu porttan çalışıyor.


    var http = require("http");
    var server = http.createServer();
    server.on('request', request);
    server.listen(99);

    function request(request, response) {
    response.end("node.js server testi!");
    };


    "deneme.html" içerisinden bir AJAX isteğiyle http://localhost:99/ adresine istekte bulunman yeterli.


    $.ajax({
    url: 'http://localhost:99',
    crossDomain: true,
    }).done(function(data) {
    console.log("node.js'den geri dönen cevap: " + data);
    });



    < Bu mesaj bu kişi tarafından değiştirildi snoppy -- 6 Şubat 2017; 22:15:17 >
  • quote:

    Orijinalden alıntı: snoppy

    Öncelikle node.js içerisinde Http Server oluşturman gerekiyor. Diyelim ki oluşturduğun bu server da 99 nolu porttan çalışıyor.


    var http = require("http");
    var server = http.createServer();
    server.on('request', request);
    server.listen(99);

    function request(request, response) {
    response.end("node.js server testi!");
    };


    "deneme.html" içerisinden bir AJAX isteğiyle http://localhost:99/ adresine istekte bulunman yeterli.


    $.ajax({
    url: 'http://localhost:99',
    crossDomain: true,
    }).done(function(data) {
    console.log("node.js'den geri dönen cevap: " + data);
    });


    Böyle mi olacak?
    klasoroku.js
    "use strict"; 
    var fs = require("fs");
    fs.readdir("deneme", function (ex, files)
    {
    if (ex) {
    console.log(ex);
    } else {
    console.log(files);
    }
    });
    var http = require("http");
    var server = http.createServer();
    server.on('request', request);
    server.listen(2000,"127.0.0.1");

    function request(request, response) {
    response.end("node.js server testi!");
    };



    klasoroku.html
    <html> 
    <body>
    <script type="text/javascript">
    $.ajax({
    url: 'http://localhost:2000',
    crossDomain: true,
    }).done(function(data) {
    //console.log("node.js'den geri dönen cevap: " + data);
    document.write("Gelen veri:" + data);
    });
    </script>
    </body>
    </html>
  • Klasör okuma işlemini "request" fonksiyonu içerisinde yapacaksın.

     
    var fs = require("fs");
    var http = require("http");

    var server = http.createServer(function(request, response) {

    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader('Access-Control-Request-Method', '*');
    response.setHeader('Access-Control-Allow-Methods', 'GET');
    response.setHeader('Access-Control-Allow-Headers', '*');

    fs.readdir('./muzikler/turkce/', function(error, data) {
    if (error) {
    throw error;
    }
    response.end(data.toString());
    });

    });

    server.listen(2000);
  • quote:

    Orijinalden alıntı: snoppy

    Klasör okuma işlemini "request" fonksiyonu içerisinde yapacaksın.

     
    var fs = require("fs");
    var http = require("http");

    var server = http.createServer(function(request, response) {

    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader('Access-Control-Request-Method', '*');
    response.setHeader('Access-Control-Allow-Methods', 'GET');
    response.setHeader('Access-Control-Allow-Headers', '*');

    fs.readdir('./muzikler/turkce/', function(error, data) {
    if (error) {
    throw error;
    }
    response.end(data.toString());
    });

    });

    server.listen(2000);


    Hocam bu haliylehttp://127.0.0.1:2000 yazdığımda dosya isimlerini tarayıcıya yazıyor. Ancak ben dosya isimlerini bir dizide tutup, daha sonra random olarak bir kaç tanesini img etiketi ile görüntüleyeceğim. Bu nedenle bu dosya isimlerini html sayfasına nasıl gönderirim. Orada da java script içinde işlem yapmam lazım sanırım. Sonuçta kişi bu sayfayı görüntülerkenhttp://sddfsdfsdgf.com/oku.js değil, ....../oku.html olarak görüntüleyecek.

  • <html>
    <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script type="text/javascript">
    // verilen diziyi karıştıran fonksiyon
    function shuffle(a) {
    var j, x, i;
    for (i = a.length; i; i--) {
    j = Math.floor(Math.random() * i);
    x = a[i - 1];
    a[i - 1] = a[j];
    a[j] = x;
    }
    return a;
    }

    function dizinOku() {
    $.ajax({
    url: 'http://localhost:2000',
    crossDomain: true,
    }).done(function(data) {
    // node.js'den geri dönen cevabı diziye dönüştürüyorum
    data = data.split(',');
    data = shuffle(data);

    var temp = '';
    $.each(data, function(i, val){
    temp += '<li>' + val + '</li>';
    });

    // ekrana bastırma...
    $('#dizinIcerik').html(temp);
    });
    }
    </script>
    </head>
    <body>

    <button onclick="dizinOku()">Dizin İçeriğini Listele</button>
    <div id="dizinIcerik"></div>

    </body>
    </html>



    < Bu mesaj bu kişi tarafından değiştirildi snoppy -- 10 Şubat 2017; 13:20:7 >
  • Aşağıdaki kod ile dediğim işi yaptım. Sayfa her yenilendiğinde, bir klasördeki 5 resim random alınıyor ve img ile gösteriliyor. Çok teşekkürler.

    Son bir şey var. Ben bu resimlere nasıl link veririm. Ama şöyle olacak. Mesela resim dosyanın adı deneme1.jpg olsun. link:http://www.deneme1.com olacak. Yani link adresi resim adı olacak.


    <html>
    <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script type="text/javascript">
    // verilen diziyi karıştıran fonksiyon
    function shuffle(a)
    {
    var j, x, i;
    for (i = a.length; i; i--)
    {
    j = Math.floor(Math.random() * i);
    x = a[i - 1];
    a[i - 1] = a[j];
    a[j] = x;
    }
    return a;
    }
    </script>
    </head>
    <body>
    <script type="text/javascript">
    $.ajax({
    url: 'http://localhost:2000',
    crossDomain: true,
    }).done(function(data) {
    // node.js'den geri dönen cevabı diziye dönüştürüyorum
    data = data.split(',');
    data = shuffle(data);
    //$('#dizinIcerik').html(data.length);
    var uz=data.length-1;
    var resimler = new Array(uz);
    var x=0;
    do
    {
    var indis = Math.round(Math.random()*uz);
    //$('#dizinIcerik').html(indis);
    if(data[indis]!='Thumbs.db')
    {
    resimler[x]='firmalar/' + data[indis];
    x=x+1;
    }
    } while(x<5);
    var myImg1 = $('#res1');
    myImg1.attr('src', resimler[0]);

    var myImg2 = $('#res2');
    myImg2.attr('src', resimler[1]);

    var myImg3 = $('#res3');
    myImg3.attr('src', resimler[2]);

    var myImg4 = $('#res4');
    myImg4.attr('src', resimler[3]);

    var myImg5 = $('#res5');
    myImg5.attr('src', resimler[4]);
    });
    </script>
    <img id="res1" name="res1" width="100" height="50" />
    <img id="res2" name="res2" width="100" height="50" />
    <img id="res3" name="res3" width="100" height="50" />
    <img id="res4" name="res4" width="100" height="50" />
    <img id="res5" name="res5" width="100" height="50" />
    </body>
    </html>



    < Bu mesaj bu kişi tarafından değiştirildi ayhan_sr -- 12 Şubat 2017; 23:55:41 >
  • Var mı bir fikriniz?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • NodeJS'yi test etmek için örneğin;

    Prompt üzerinde:

    C:\>cd NodeJS

    C:\NodeJS>node deneme.js

    yazarak çalıştırıyor ve ilgili html yi görüntülüyoruz. Gerçek web sunucuda çalıştırmak için ne yapmalıyız. Çalıştıramadım.

    Mesela bende, D:\NodeJS içinde yer alıyor dosyalar. Çalışmak için;
    1) C:\>D:
    D:\>cd NodeJS
    D:\NodeJS>node oku.js

    2) bu işlemden sonra oku.html dosyasının üzerine çift tıklıyorum. Amacıma uygun çalışıyor. Gerçek sunucuda bu işlem nasıl olacak?



    < Bu mesaj bu kişi tarafından değiştirildi ayhan_sr -- 17 Şubat 2017; 9:49:7 >
  • Gerçek sunucuda da aynı şekilde çalışacak cunku (biliyorsundur) node web sunucu aynı zamanda. Sadece sunucu ortamında genelde ek betiklerle calıştırma yapılır , cunku tam amaca uygun çalışması için örneğin EngineYard'tan indirdiğim bir Node.js Chat programında çalıştırma betiği var şu sekilde:



    1#!/usr/bin/env sh

    2

    3./node_modules/.bin/node-dev ./app.js





    yani node-dev diye bir betik asıl uygulama olan app.js 'i calıştırıyor. node-dev de komut satırındaki argümanları kontrol eden ve ek kontroller vs. yapıp yeni proses başlatan bi betik: (DH Forum mini sürümünde code seçeneğini bulamadım o yüzden direkt metin olarak gönderiyorum maalesef : ; )



    #! /usr/bin/env node

    var spawn = require('child_process').spawn;

    var env = process.env;

    var node = process.argv[0];



    /* Pass the location of the node-dev script to the child process */

    env.NODE_DEV = process.argv[1];



    var args = process.argv.slice(2);



    if (!args.length) {

    console.log('Usage: node-dev [options] script.js [arguments]\n');

    process.exit(1);

    }



    /** Find the first arg that is not an option */

    for (var i=0; i < args.length; i++) {

    if (!/^-/.test(args)) {

    args.splice(i, 0, __dirname + '/wrapper.js');

    break;

    }

    }



    function start() {

    var child = spawn(node, args, {

    cwd: process.cwd(),

    env: env,

    customFds: [0, 1, 2]

    });

    child.on('exit', function(code) {

    if (code === 101) {

    process.nextTick(start);

    }

    else {

    process.exit(code);

    }

    });

    }



    start();

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Sonuç olarak, bu kodları app.js adıyla oluşturup, çalıştırmak istediğim diğer js ve html dosyalarının olduğu dizine mi atacağım?
  • yo öyle birşey demedim, yıllar önce denediğim hazır kod lardan ufak bir örnek verdim sadece. yoksa her duruma göre çalıştırna yöntemi farklı olabilir. bu süreçte seni biraz Google ve StackOverflow ara(ştır)maları bekler :)

    < Bu ileti mini sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.