Изучение JavaScript по сравнению с jQuery

Я нашел причину для этого, methinks:

Этот метод находится в классе WrappedAsyncResult, который класс MvcHandler использует через BeginProcessRequest:

public static IAsyncResult BeginSynchronous<TResult>(AsyncCallback callback, object state, Func<TResult> func, object tag)
{
    BeginInvokeDelegate beginDelegate = delegate (AsyncCallback asyncCallback, object asyncState) {
        SimpleAsyncResult result = new SimpleAsyncResult(asyncState);
        result.MarkCompleted(true, asyncCallback);
        return result;
    };
    EndInvokeDelegate<TResult> endDelegate = _ => func();
    WrappedAsyncResult<TResult> result = new WrappedAsyncResult<TResult>(beginDelegate, endDelegate, tag);
    result.Begin(callback, state, -1);
    return result;
}

где «Begin» - это:

public void Begin(AsyncCallback callback, object state, int timeout)
{
    bool completedSynchronously;
    this._originalCallback = callback;
    lock (this._beginDelegateLockObj)
    {
        this._innerAsyncResult = this._beginDelegate(new AsyncCallback(this.HandleAsynchronousCompletion), state);
        completedSynchronously = this._innerAsyncResult.CompletedSynchronously;
        if (!completedSynchronously && (timeout > -1))
        {
            this.CreateTimer(timeout);
        }
    }
    if (completedSynchronously && (callback != null))
    {
        callback(this);
    }
}

РЕДАКТИРОВАТЬ: придумали неуклюжий способ заставить действия контроллера MVC «тайм-аут», хотя механизм немного грубоват:

public class TimeoutController : Controller
{
    private bool _isExecuting = false;
    private int _controllerTimeout = 5000;
    private Thread _executingThread;
    private readonly object _syncRoot = new object();

    protected override void ExecuteCore()
    {
        _executingThread = Thread.CurrentThread;
        ThreadPool.QueueUserWorkItem(o =>
            {
                Thread.Sleep(_controllerTimeout);
                if (_isExecuting)
                {
                    _executingThread.Abort();
                }
            });
        base.ExecuteCore();
    }

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        _isExecuting = true;
        base.OnActionExecuting(filterContext);
    }

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        _isExecuting = false;                
        base.OnActionExecuted(filterContext);
    }

    public int ControllerTimeout
    {
        get
        {
            int retVal;
            lock(_syncRoot)
            {
                retVal = _controllerTimeout;
            }
            return retVal;
        }
        set
        {
            lock(_syncRoot)
            {
                _controllerTimeout = value;                    
            }
        }
    }
}
10
задан OscarRyz 22 May 2009 в 18:01
поделиться

12 ответов

jQuery - это javascript. Я думаю, ты на правильном пути. Хорошо изучите javascript, и вы сможете лучше использовать jQuery.

35
ответ дан 3 December 2019 в 13:14
поделиться

Так в чем ваш вопрос? JQuery - это фреймворк , построенный на основе языка JavaScript. Чтобы уверенно использовать JQuery, вам следует познакомиться с JavaScript. JQuery содержит множество полезных шаблонов и утилит, которые маскируют несовместимость браузеров. Использование фреймворка JavaScript имеет смысл, поскольку оно позволяет сосредоточиться на вашей проблеме, а не на проблеме реализаций JavaScript в браузерах.

Для получения дополнительных сведений о фреймворках JavaScript см. Вопрос SO »Какая структура Javascript (jQuery vs Додзё против…)? «. Для изучения JavaScript изучите хорошие части .

8
ответ дан 3 December 2019 в 13:14
поделиться

если все, что ваш менеджер просит от вас, - это показать и скрыть некоторые элементы, или постепенно появиться и исчезнуть несколько изображений, или запросить некоторые данные через ajax и отобразить их, а затем изучить jquery и его api - это, возможно, все, что вам нужно.

но если вы (или ваш менеджер) обеспокоены производительностью, ремонтопригодностью, повторным использованием кода и в целом понимаете, что * ell происходит «там», тогда изучение самого языка будет безопасным ставка.

Я бы посоветовал взять копию JavaScript: The Definitive Guide , которая даст вам общее представление о том, что это такое и как его использовать, и многое другое. Пока вы занимаетесь этим, я также предлагаю методы Pro Javascript Джона Ресига. Этот парень действительно знает свой javascript наизнанку (работает, среди прочего, для Mozilla, автора jQuery).

Что касается jQuery, вам действительно не нужно покупать книгу. Просто просмотрите API и посмотрите его исходный код. Возможно, вы многого не поймете, но есть кое-что интересное, что заставит вас задуматься.

5
ответ дан 3 December 2019 в 13:14
поделиться

Вполне возможно изучить jQuery, не изучая сначала каждый бит javascript. Однако, чтобы быть продуктивным и расширить функциональные возможности плагинов и т. Д., Вам необходимо знать javascript.

Я бы посоветовал вам использовать и то, и другое. Продолжайте изучать Javascript, но если вы хотите реализовать функциональность, используйте библиотеку jQuery.

4
ответ дан 3 December 2019 в 13:14
поделиться

JQuery обеспечивает хороший уровень абстракции для взаимодействия с элементами DOM. С ним можно быстро и легко делать много интересного. Но, вероятно, есть много вещей, которые JQuery не сделает для вас. Для этого вам понадобится обычный JavaScript.

2
ответ дан 3 December 2019 в 13:14
поделиться

jQuery сделан на основе javascript. :)

Было бы очень хорошей идеей прочитать исходный код jQuery, чтобы улучшить ваше общее понимание javascript ...

Определенно изучите и то, и другое одновременно :)
Удачи и веселья.

2
ответ дан 3 December 2019 в 13:14
поделиться

Если у вас уже есть понимание C #, у вас будет преимущество перед изучением Javascript, и это не должно быть слишком сложно. Я бы придерживался этой книги Javascript, поскольку вам нужно знать Javascript, чтобы использовать jQuery. Когда вы освоитесь с Javascript, переходите к изучению jQuery. Документы jQuery ОЧЕНЬ полезны и могут ответить практически на любой ваш вопрос.

Удачи в изучении, оно того стоит.

Документы jQuery

2
ответ дан 3 December 2019 в 13:14
поделиться

jQuery устраняет необходимость во многих вредных привычках Javascript. Однако вам часто нужно знать больше, чем просто jQuery, чтобы выполнять нетривиальную работу.

Вам нужно изучить оба, но постарайтесь выработать привычки, основанные на jQuery.

2
ответ дан 3 December 2019 в 13:14
поделиться

Возможно, ваш начальник пытается сэкономить вам время, изучая основы Javascript, и сразу же начать изучать jQuery, но я думаю, что это плохая идея.

Понимание основ javascript является ключом к успешному использованию jQuery. jQuery предоставляет ярлыки и решения проблем (кроссбраузерные проблемы и т. д.), но это не язык сам по себе.

Мой совет, изучите javascript, узнайте об обработке событий в разных браузерах, вставке в DOM и затем начните использовать jQuery . Вы оцените это гораздо больше и станете лучшим программистом.

2
ответ дан 3 December 2019 в 13:14
поделиться

I would say the statement is akin to you reading a C#/VB.Net book and having your boss say "Don't bother, just learn ASP.Net". You really don't get much from the latter without the former.

3
ответ дан 3 December 2019 в 13:14
поделиться

что такое U делаешь? - конечно, чистый JavaScript лучше =)

0
ответ дан 3 December 2019 в 13:14
поделиться

Библиотеки всегда будут содержать несущественную сложность, но они могут сэкономить некоторые головные боли если они не слишком раздуты или уже присутствуют в системах конечных пользователей. Лучше всего было бы изучить javascript при использовании jquery, а затем медленно удалить костыль использования jquery. Несмотря на то, что он мощный, он добавляет значительные накладные расходы, несущественную сложность и потенциальные возможности для злоупотреблений, как и flash. Серебряных пуль нет.

0
ответ дан 3 December 2019 в 13:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: